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