Linux 進程後臺運行的方法

當用戶註銷(logout)或者網絡斷開時,終端會收到 HUP(hangup)信號從而關閉其全部子進程。所以,咱們的解決辦法就有兩種途徑:要麼讓進程忽略 HUP 信號,要麼讓進程運行在新的會話裏從而成爲不屬於此終端的子進程。網絡

nohup

nohup 的用途就是讓提交的命令忽略 hangup 信號。code

nohup 的使用是十分方便的,只需在要處理的命令前加上 nohup 便可,標準輸出和標準錯誤缺省會被重定向到 nohup.out 文件中。通常咱們可在結尾加上"&"來將命令同時放入後臺運行,也可用">filename 2>&1"來更改缺省的重定向文件名。進程

[root@pvcent107 ~]# nohup ping www.ibm.com &

setsid

setsid 能夠讓進程忽略HUP信號,作到命令後臺執行的效果。後臺

setsid 的使用也是很是方便的,也只需在要處理的命令前加上 setsid 便可。file

若是咱們未加任何處理就已經提交了命令,該如何補救才能讓它避免 HUP 信號的影響呢?終端

能夠經過做業調度和 disown 來解決這個問題。重定向

  • 用disown -h jobspec來使某個做業忽略HUP信號。di

  • 用disown -ah 來使全部的做業都忽略HUP信號。文件

  • 用disown -rh 來使正在運行的做業忽略HUP信號。ping

當使用過 disown 以後,會將把目標做業從做業列表中移除,咱們將不能再使用jobs來查看它,可是依然可以用ps -ef查找到它。

& 的做用

& 放在啓動參數後面表示設置此進程爲後臺進程

相關文章
相關標籤/搜索