Linux後臺執行的方法 - 關閉、退出不影響

難免會遇到在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 來暫時斷開當前會話。

相關參考
http://zhidao.baidu.com/link?url=ExqGjkIT47Rba1MnIHh-33Q8hUCYUFNpnWRGY273QYifLls1n-uFQ6Tfpeop4ng-r0M9_OiZZrllwnw-IZgB8_

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章