1. 程式人生 > >Linux後臺執行的方法 - 關閉、退出不影響

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

所有 mat data ack job tid scree 快捷 -c

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

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