我有一个从 DVD 运行的 bash 脚本。此脚本将多卷 tar 文件从 DVD 复制到本地计算机。在复制的中途,脚本提示用户插入第二张 DVD,此时剩余的文件将被复制。该脚本存在于第一张 DVD 上,但不存在于第二张 DVD 上。
此脚本只是在复制最后一个文件后停止,但在开始 tar 多卷提取操作和后续处理之前。没有报告错误或消息。我试过用'-x'运行bash,但没有什么可疑的——甚至没有退出语句。更不幸的是,这种行为是不一致的。有时脚本会停止,但有时它会继续运行而没有问题。
我已经在脚本上运行了 strace。在复制操作结束后,我看到了:
read(255, "\0\0\0\0\0\0\0\0\0\0"..., 5007) = 1302
read(255, "", 5007) = 0
exit_group(0) = ?
我知道 bash 将脚本文件读入内存并从那里执行它,但是它是否有可能在某个时候尝试重新读取脚本文件并且失败(因为它不再存在)?tar 文件非常大,从脚本开始到最后一个文件被复制(从第二张 DVD)大约需要 10-15 分钟。