難免會遇到在Linux,後臺執行任務。下面,總結了一下關閉窗口任然在後臺執行的方法,例如
#執行一個打包命令
tar czf /data/backup.tgz /data/backup
1. 採用&
tar czf /data/backup.tgz /data/backup &
ctrl+d #退出 纔可以,如果直接關閉窗口,進程任然會被關閉
2. 採用nohup
nohup tar czf /data/backup.tgz /data/backup
ctrl+z #掛起到後臺
bg #後臺執行 可以先通過jobs 查看當前有多少job
ctrl+d #或者 關閉窗口 進程任然會在後臺執行
3.採用nohup + &
nohup tar czf /data/backup.tgz /data/backup &
ctrl+d 或者 關閉窗口 進程任然會在後臺執行
4.採用(command &)
(tar czf /data/backup.tgz /data/backup &) #會將ppid設置爲1,而非當前會話的id,並且jobs查看不到當前的作業。注意這裏的括號即是這個方法的重點。
ctrl+d #或者 關閉窗口 進程任然會在後臺執行
5.採用setid run a program in a new session
setid tar czf /data/backup.tgz /data/backup #會將ppid設置爲1,而非當前會話的id
ctrl+d #或者 關閉窗口 進程任然會在後臺執行
6.採用disown
tar czf /data/backup.tgz /data/backup
ctrl+z
jobs
bg %N
disown -h %N #N即爲job的id disown 可以配合 &使用,效果更好,因爲 CTRL-z 的用途就是將當前進程掛起(Suspend),然後我們就可以用jobs命令來查詢它的作業號,再用bg jobspec來將它放入後臺並繼續運行。需要注意的是,如果掛起會影響當前進程的運行結果,請慎用此方法。
disown -rh -a xxx #-a所有 -r所有 -h忽略hup
7.採用screen
screen
tar czf /data/backup.tgz /data/backup
ctrl+a d #不可以直接ctrl+d 這樣會ternimate screen
用screen -dmS session name來建立一個處於斷開模式下的會話(並指定其會話名)。
用screen -list 來列出所有會話。
用screen -r session name來重新連接指定會話。 screen -x session_name(id) 連接attached會話
用快捷鍵CTRL-a d 來暫時斷開當前會話。