一度起動した時間のかかるコマンドをバックグラウンドで動かす

例えば、find / -name "*.txt" | grep hogehoge とか実行して、思いの外時間がかかる場合に

  1. Ctrl+z で一旦 suspend
  2. jobs -l でジョブ番号確認
  3. bg ジョブ番号

でバックグラウンドで実行できる。

まぁこれだけなら、Ctrl+c して、↑キー押して、& を最後につけて再度実行すればいいのだが、インタラクティブなコマンドの場合は非常に便利です。例えば、scp コマンドで鍵認証じゃない場合はパスワードを求められるので、普通に & を付けてバックグラウンドで実行できないので、一旦普通に実行してから、バックグラウンドで起動しなおすというテクが必要になる。

あと、ログアウトしたらバックグラウンドで起動してても終了されてしまうので、その場合は現在の端末とジョブを切り離す必要がある。

  1. Ctrl+z で一旦 suspend
  2. jobs -l でジョブ番号確認
  3. bg ジョブ番号
  4. disown %ジョブ番号

でログアウトしてもずっと実行し続けてくれるようになります。

参考URL
http://d.hatena.ne.jp/yohei-a/20100212/1265950974
http://d.hatena.ne.jp/is0me/20100106/1262754530