軽い気持ちで実行したコマンドが、なかなか終わらなくて、あー。もー。帰りたいのに終わるまで帰れない。
なんて経験があったりする。ただこの disown ってコマンドを覚えておけば、そんなことを気にしないで実行したまま家に帰ることが出来る。
たぶんbash限定かもしれないけど、自分bashしか使わないので。。。
具体的には、
Ctrl-z でプロセスを一旦止めて、
bg でバックグラウンドプロセスにして。
って感じ。
ただこのままログアウトしても大丈夫なプロセスもあったりするのだが、止まるやつは止まる。
そこで、 disown %1 を実行してあげる。(%1はjob id jobsコマンドで確認出来る)
これでログアウトしても止まらないはずなので、安心して帰れる。
以下サンプル(cpの大量コピーとかがよくあるかと)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ cp -av /media/usb-hdd my-bkup/ Ctrl-z # ここで一旦止める。 $ bg # バックグラウンドにする。 $ jobs [1]+ 実行中 cp -av /media/usb-hdd my-bkup/ & # job idを確認。ここでは%1 $ disown %1 $ jobs # 自分のjobから消えてればOK |
こんな感じ。標準出力するプログラムだと、入力が大変だが、めげずに実行する。
ログアウトすると、標準出力、標準エラーは保存できないので、そこは諦めるか別の方法。
最初から、時間がかかるのがわかっているなら、 nohup を使ったほうが良い。標準出力もファイルに保存されるので。
nohupの記事も過去にちょろっと書いた。