Linux運行與控制後台進程的方法:nohup, setsid, &, disown, screen

來源:互聯網
上載者:User
Linux運行與控制後台進程的方法:nohup, setsid, &, disown, screen

轉自http://heylinux.com/archives/1282.html#more-1282 

 

我們經常會碰到這樣的問題,用ssh登入了遠端Linux伺服器,運行了一些耗時較長的任務,結果卻由於網路等的不穩定導致任務中途失敗。
這是由於在使用者登出(logout)或者網路斷開時,終端會收到 HUP(hangup)訊號從而關閉其所有子進程。
解決辦法有兩種:讓進程忽略HUP訊號,或讓進程運行在新的會話裡從而成為不屬於此終端的子進程。

下面是對Linux下運行與控制後台進程的各種方法的介紹:
1.nohup
顧名思義,nohup的用途就是讓提交的命令忽略所有的hangup訊號。
使用方法:nohup COMMAND [ARG]...

2.setsid
在一個新的會話中運行命令,從而可以避開當前終端發出的HUP訊號。
使用方法:setsid COMMAND [ARG]...

3.&
可以結合()產生一個新的子shell並在這個子shell中將任務放置到後台運行,從而不受當前shell終端的HUP訊號影響。
使用方法:(COMMAND [ARG]... &)

而我通常的使用方式為:
nohup ./filename.sh > filename.log 2>&1 &
三點理由:
1)nohup保障進程不會被hangup訊號異常中斷;
2)將任務放置到後台運行,不佔用當前的終端;
3)將錯誤輸出也列印到log中,預設>只有標準輸出,錯誤輸出沒有。


4.控制進程
通過以下命令,我們可以對放入到背景命令進行控制

查看當前終端下的後台進程:
直接執行:jobs

將查看到的某個後台進程放回到前台:
直接輸入:fg {jobid} //這裡的{jobid}是通過jobs命令中看到的進程前[]中的數字。

將當前正在前台啟動並執行進程放到後台運行:
先敲下快速鍵:ctrl +z //暫停當前正在啟動並執行進程。
再執行:bg

終止當前正在前台啟動並執行進程:
直接敲下快速鍵:ctrl +c

5.disown
亡羊補牢,為沒有使用nohup與setsid的進程加上忽略HUP訊號的功能。
使用方法:
將當前正在前台啟動並執行進程放到後台運行(ctrl+z和bg);
然後執行disown -h %{jobid} //這裡的{jobid}是通過jobs命令中看到的進程前[]中的數字。

6.通過screen來實現穩定的後台運行
screen是建立一個新的全屏虛擬會話終端,這個會話只有在手動輸入exit的時候才會退出,在這個會話裡執行的命令不用擔心HUP訊號會對我們的進程造成影響,因此也不用給每個命令前都加上“nohup”或“setsid”了,非常適合我們有規劃的執行大量的背景工作,可以非常方便的讓我們對這些背景工作進行管理。

使用方法:
screen //立即建立並進入一個會話。
screen -dmS {name} //建立一個處於斷開模式下的會話,並根據我們的需要指定其會話名稱。
screen -list //列出所有會話。
screen -r {name} //進入指定會話。
ctrl +ad //輸入快速鍵ctrl +a和d,可暫時退出當前會話。
exit //進入指定會話後執行exit即可關閉該會話。

參考資料:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.