Linuxでは、バックグラウンドでコマンドを実行したい時に「nohup コマンド &」というコマンドをよく使用します。しかし、接続元の端末がシャットダウンや再起動された場合、そのプロセスはどうなるのでしょうか?この記事では、その挙動について詳しく解説します。
1. nohup コマンドとは?
「nohup」は「no hang up」の略で、端末から切断されても実行中のプロセスを終了させないためのコマンドです。通常、端末を閉じるとその端末で実行中のプロセスも終了しますが、nohupコマンドを使用することで、この問題を回避できます。
また、コマンドの後ろに「&」をつけることで、コマンドをバックグラウンドで実行することができます。これにより、コマンドが終了するまでターミナルを占有せず、他の操作が可能となります。
2. nohup コマンドの基本的な使い方
nohupコマンドは以下のように使用します:
nohup コマンド &
例えば、長時間実行されるスクリプトやプログラムをバックグラウンドで実行したい場合、このコマンドを使います。nohupの出力は、デフォルトで「nohup.out」というファイルに保存されます。
3. 端末のシャットダウンや再起動後の挙動
質問にある通り、接続元の端末がシャットダウンや再起動された場合、nohupを使ったプロセスはどうなるのでしょうか?実際、nohupを使ったコマンドは、端末のセッションが切断されてもバックグラウンドで実行を続けます。
ただし、サーバ自体がシャットダウンまたは再起動されると、全てのプロセスは停止します。そのため、端末のシャットダウンや再起動ではなく、サーバ側の再起動が関わる場合には、プロセスが停止します。
4. サーバ再起動後のプロセスの再開
もしサーバが再起動され、nohupを使っていたプロセスが停止した場合、再度そのプロセスを手動で実行する必要があります。nohup自体は、再起動後には自動で再開しません。このため、プロセスが再起動後にも継続するようにするには、systemdやcron
ジョブを使用して、プロセスを自動的に再実行する設定を行う必要があります。
5. まとめ
「nohup コマンド &」を使用することで、端末を切断してもバックグラウンドでプロセスを継続させることができますが、サーバが再起動されると、プロセスは終了します。そのため、再起動後もプロセスを継続したい場合は、systemdやcronを使用したプロセスの自動化を検討すると良いでしょう。
コメント