実行中のコマンドをバックグランドで実行する

100G以上ある大きなデータベースをエクスポートしたら数時間かかりそうで、実行中のコマンドをバックグランドに回したくなりました。コマンド実行時に「nohup」を使えばいいですが忘れていました

実行途中でバックグランドで実行するには、「disown」コマンドを使えばログアウトしても実行されます

# test_db をエクスポートします
$ mysqldump -u root -p test_db > test_db.sql

# エクスポートに時間がかかるので、バックグランドで実行するようにします
# 「Ctrl」+「z」を押して、ジョブを一旦停止します押下
^Z
[1]+  Stopped                 mysqldump -u root -p test_db > test_db.sql

# バックグランドで実行します
$ bg 1
[1]+ mysqldump -u root -p test_db > test_db.sql &

# 実行中のジョブを確認します
$ jobs
[1]+  Running                 mysqldump -u root -p test_db > test_db.sql &

# ログアウトしても実行されるようにします
$ disown %1

初めからバックグランドで実行するには「nohup」を使えば、ログアウトしても実行されます。
使い方は下記のように、nohupの後に実行したいコマンドを入力してから「&」を付けてバックグランドで実行するようにします

$ nohup (コマンド) &

$ nohup sh test.sh &
[1] 426999
$ nohup: ignoring input and appending output to 'nohup.out'

nohup」を付けてバックグランドで実行した場合で、標準出力で表示される結果などは、カレントディレクトリの「nohup.out」と保存されています