我有一个正在运行的后台进程,其命令以“nohup Nice”开头。由于通常需要 20 个小时,所以我让它在晚上运行。然而,今天早上我收到一条消息说“写入失败:管道损坏”,可能是因为服务器关闭了空闲时间太长的连接。当我再次登录服务器时,输入“jobs”命令时没有作业。如何从程序剩余的位置重新启动程序,而不是从头开始运行?
答案1
这取决于您在哪里看到该消息。如果您通过 ssh 连接到服务器并在本地终端上看到了这一点,那就没问题。该进程可能仍在远程服务器上正常运行。您不会看到它,jobs
因为jobs
只显示当前 shell 会话中运行的进程。如果您重新连接到服务器,您将开始一个新会话,因此jobs
没有帮助。尝试运行ps aux | grep ProcessName
以检查它是否仍在运行。
如果您在输出文件中或输出文件中看到此消息nohup.out
,则您看不到。除非它是一个以某种方式支持恢复的过程。该错误意味着进程已停止。既然已经停止了,那就消失了,没有办法恢复了。
例如,如果这是读取输入文件并生成输出,您可以尝试找出它何时停止并再次运行它,仅将剩余的行作为输入。不过,没有任何技巧可以让它神奇地重新启动,因为没有它何时停止的记录。