[Linux] コマンド実行した処理が途中で止まる

環境AWS,Linux

現象

ssh で AWS EC2 上で、処理時間長めのバッチをコマンド実行したところ、処理が途中で停止してしまった。ログには、エラーが出ているのではなく、途中から出力されていなかった。

原因

ssh 接続がタイムアウトし、実行中のコマンドも自動的に終了されるため。

対処方法

nohup& をつける。コマンド部分は sudo ... など実行したいものを書く。

$ nohup コマンド & 

&:バックグラウンドで実行する。

nohup :ssh ログアウト時に送られる HUP シグナル (SIGHUP) を無視する。

SIGHUP シグナル : 制御端末の切断(ハングアップ)、仮想端末の終了
Linuxの「シグナル」って何だろう?

& でバックグラウンド実行にしても、ssh 接続がタイムアウトし、ログアウトになると ssh 上のジョブは終了する。nohup を付けることで、ssh ログアウト状態になっても強制終了されないようにしておく。

Posted by Agopeanuts