「壊れたパイプ」で失敗したバックグラウンドジョブを再開する方法

「壊れたパイプ」で失敗したバックグラウンドジョブを再開する方法

「nohup Nice」で始まるコマンドで実行されるバックグラウンドプロセスがあります。通常20時間ほどかかるので夜に実行させておきました。しかし今朝、「書き込みに失敗しました:パイプが壊れています」というメッセージが表示されました。おそらく、サーバーが長時間アイドル状態になっていた接続を閉じていたからです。再度サーバーにログインして「jobs」コマンドを入力すると、操作はありません。プログラムを最初から実行せずに残っ​​ている場所から再起動するにはどうすればよいですか?

答え1

メッセージが表示される場所によって異なります。サーバーにSSH経由で接続し、ローカル端末でこの内容を確認してもかまいません。プロセスがリモートサーバー上で正常に実行されている可能性があります。現在、シェルセッションで実行されているプロセスのみが表示されるため、jobs表示されません。jobsサーバーに再接続すると新しいセッションが開始されるため、jobs役に立ちません。実行して、ps aux | grep ProcessNameまだ実行中であることを確認してください。

出力ファイルまたは出力ファイルにこのメッセージが表示された場合、そのnohup.outメッセージは表示されません。何らかの方法で回復をサポートするプロセスでない限り。このエラーは、プロセスが停止したことを意味します。これで停止したため消え、復元する方法はありません。

たとえば、入力ファイルを読み込んで出力を生成する場合は、いつ停止するかを確認して再実行して、残りの行のみを入力として使用できます。しかし、いつ停止したかについての記録がないので、魔法のように再起動するようにする方法はありません。

関連情報