リモートサーバーで時間がかかる処理をさせる場合、リモートサーバーとの接続が切れると処理も中断されてしまいます。
そんなとき、nohupコマンドを使えばリモート接続が切れてもサーバー側ではそのまま処理を続けてくれます。
使い方
使い方は簡単です。
”nohup”と”&”で実行したいスクリプトをサンドイッチするだけです。
1 |
nohup [command] & |
使いどころ
冒頭にも書きましたが、以下のような場合が使えると思います。
- 長大処理(複雑な処理やアップデート、sortやgrepなど)
- サーバー間の同期処理(scpやrsyncなど)
実践
実際にUbuntuのアップグレードをnohupで実行してみます。
1 2 3 |
$ nohup sudo apt -y upgrade & [1] 605529 $ nohup: 入力を無視し、出力を 'nohup.out' に追記します |
nohup.outに実行中の内容が追記されていくので、catやtailなどで内容を確認できます。
1 2 3 4 5 6 7 8 9 10 11 |
$ tail -f nohup.out udisks2 (2.8.4-1ubuntu2) で (2.8.4-1ubuntu1 に) 上書き展開しています ... .../53-xserver-xephyr_2%3a1.20.11-1ubuntu1~20.04.2_amd64.deb を展開する準備をしています ... xserver-xephyr (2:1.20.11-1ubuntu1~20.04.2) で (2:1.20.9-2ubuntu1.2~20.04.2 に) 上書き展開しています ... .../54-xwayland_2%3a1.20.11-1ubuntu1~20.04.2_amd64.deb を展開する準備をしています ... xwayland (2:1.20.11-1ubuntu1~20.04.2) で (2:1.20.9-2ubuntu1.2~20.04.2 に) 上書き展開しています ... linux-base (4.5ubuntu3.7) を設定しています ... gnome-settings-daemon-common (3.36.1-0ubuntu1.1) を設定しています ... alsa-ucm-conf (1.2.2-1ubuntu0.11) を設定しています ... linux-firmware (1.187.20) を設定しています ... update-initramfs: Generating /boot/initrd.img-5.11.0-40-generic |
処理を中断したい場合は、psコマンドでプロセスを確認し、killコマンドで処理をkillすればOKです。
コメント