Linux后台執行的方法 - 關閉、退出不影響


=============================================================================================
nohup command > myout.file 2>&1 &

命令解析:

    使用nohup命令后台運行命令之后,需要使用exit正常退出當前賬戶,這樣才能保證命令一直在后台運行。
    command>out.file是將command的輸出重定向到out.file文件,即輸出內容不打印到屏幕上,而是輸出到out.file文件中。
    2>&1 是將標准出錯重定向到標准輸出,這里的標准輸出已經重定向到了out.file文件,即將標准出錯也輸出到out.file文件中。
    最后一個&, 是讓該命令在后台執行。

    ctrl + z
    可以將一個正在前台執行的命令放到后台,並且處於暫停狀態。

    Ctrl+c
    終止前台命令。

    jobs
    查看當前有多少在后台運行的命令。
    jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。

       注意:當前用戶退出后再次登錄,無法通過jobs查詢后台任務,需要使用PS才可以找到。被坑了,MARK下。

    tail -100f out.file

       可以監控日志文件

=============================================================================================

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM