【Linux】実行中のジョブを終了させない「disown」
実行中のジョブを終了させない disown
の使い方。
実行したプログラムが思ったより時間がかかり終わらないけど帰りたいターミナルを閉じたい時に使えます。
disown の使い方
- コマンドを実行
Ctrl + z
でコマンドを中断jobs
で該当のジョブを確認bg
で該当のジョブをバックグランド化(該当のジョブ番号を指定disown
でターミナル接続を切っても実行(該当のジョブ番号を指定
1
2
3
4
5
6
7
8
9
| # 1. コマンドを実行
sh -c 'echo "start `date`" && sleep 100 && echo "end `date`"' > disown.log
# 2. Ctrl + z で中断
# 3. jobs で該当のジョブを確認
[1]+ Stopped sh -c 'echo "start `date`" && sleep 100 && echo "end `date`"' > disown.log
# 4. bg でバックグランド処理(該当のジョブ番号を指定
bg %1
# 5. disown でターミナル接続を切っても実行(該当のジョブ番号を指定
disown %1
|
disown
, bg
ジョブ番号なしだとカレントジョブに対して行います
ちょっと応用
末尾に &
を付けて最初からバックグランド実行させてからも出来ます。
1
2
3
4
5
6
7
8
| # 1. コマンドを実行
sh -c 'echo "start `date`" && sleep 100 && echo "end `date`"' > disown.log &
# 2. jobs で該当のジョブを確認
[1]+ Stopped sh -c 'echo "start `date`" && sleep 100 && echo "end `date`"' > disown.log &
# 3. bg でバックグランド処理(該当のジョブ番号を指定
bg %1
# 4. disown でターミナル接続を切っても実行(該当のジョブ番号を指定
disown %1
|