実行中のコマンドをバックグランドで実行する
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」と保存されています
ディスカッション
コメント一覧
まだ、コメントがありません