nohup程式後台執行

2021-09-08 17:37:09 字數 1639 閱讀 3423

linux常用命令,用於不結束通話的執行程式。

nohup命令:如果你正在執行乙個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之後繼續執行相應的程序。nohup就是不掛起的意思( no hang up)。

nohup command [ arg ... ] [ & ]

如果不將 nohup 命令的輸出重定向,輸出將附加到當前目錄的nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $home/nohup.out 檔案中。如果沒有檔案能建立或開啟以用於追加,那麼command 引數指定的命令不可呼叫。

如果標準錯誤是乙個終端,那麼把指定的命令寫給標準錯誤的所有輸出作為標準輸出重定向到相同的檔案描述符。

1. nohup

顧名思義,nohup的用途就是讓提交的命令忽略所有的hangup訊號。

2. setsid

在乙個新的會話中執行命令,從而可以避開當前終端發出的hup訊號。

使用方法:setsid command [arg]…

3. &

可以結合()產生乙個新的子shell並在這個子shell中將任務放置到後台執行,從而不受當前shell終端的hup訊號影響。

通常的使用方式為:

nohup ./filename.sh > filename.log 2>&1 &

三點理由:

1)nohup保障程序不會被hangup訊號異常中斷;

2)將任務放置到後台執行,不占用當前的終端;

3)將錯誤輸出也列印到log中,預設》只有標準輸出,錯誤輸出沒有。

4.控制程序

通過以下命令,我們可以對放入到後台的命令進行控制

將檢視到的某個後台程序放回到前台:

直接輸入:fg //這裡的是通過jobs命令中看到的程序前中的數字。

將當前正在前台執行的程序放到後台執行:

先敲下快捷鍵:ctrl +z //暫停當前正在執行的程序。

再執行:bg

終止當前正在前台執行的程序:

直接敲下快捷鍵:ctrl +c

檢視當前後台程序 jobs –l

5.disown

亡羊補牢,為沒有使用nohup與setsid的程序加上忽略hup訊號的功能。

使用方法:

將當前正在前台執行的程序放到後台執行;

然後執行disown -h %

用disown -h jobspec 來使某個作業忽略hup訊號。 

用disown -ah 來使所有的作業都忽略hup訊號。

用disown -rh 來使正在執行的作業忽略hup訊號。

6.通過screen來實現穩定的後台執行

screen是建立乙個新的全屏虛擬會話終端,這個會話只有在手動輸入exit的時候才會退出,在這個會話裡執行的命令不用擔心hup訊號會對我們的程序 造成影響,因此也不用給每個命令前都加上「nohup」或「setsid」了,非常適合我們有規劃的執行大量的後台任務,可以非常方便的讓我們對這些後台 任務進行管理。

nohup後台執行程式

1 bin bash 2 ulimit s 2621400 3 ulimit c 2048000 4 sleep25 killall 9 ljyx sghall new 6 sleep 27 trap 12 3248 nohup ljyx sghall new ljyx sghall new.log...

nohup後台執行程式

問題描述 開啟終端,使用nohup後台啟動服務之後,只要關掉終端,服務就down了 期望結果 關掉終端後,服務依然後台保持執行 技術分析 unix linux下一般想讓某個程式在後台執行,很多都是使用 在程式結尾來讓程式自動執行 但如果要想在退出終端後,程式依然還在後台執行,則要用nohup與 組合...

nohup後台執行 關閉後台程式

參考 在跑時間比較長的程式,或者列印資訊比較多,或者網路不穩定時,可以採用後台執行程式,然後把列印資訊儲存在檔案中,等程式結束後再檢查日誌,完成該功能可以用以下命令 1.nohup python3 u test.py test.log 2 1 2.回車 3.輸入exit命令退出終端 4.關閉shel...