Linux 後台執行命令 和nohup

2021-09-13 23:39:39 字數 2188 閱讀 1312

當我們在終端或控制台工作時,可能不希望由於執行乙個作業而佔住了螢幕,因為可能還有更重要的事情要做,比如閱讀電子郵件。對於密集訪問磁碟的程序,我們更希望它能夠在每天的非負荷高峰時間段執行(例如凌晨)。為了使這些程序能夠在後台執行,也就是說不在終端螢幕上執行,有幾種選擇方法可供使用。

當在前台執行某個作業時,終端被該作業佔據;可以在命令後面加上& 實現後台執行。

例如:sh test.sh &

適合在後台執行的命令有find、費時的排序及一些shell指令碼。在後台執行作業時要當心:需要使用者互動的命令不要放在後台執行,因為這樣你的機器就會在那裡傻等。不過,作業在後台執行一樣會將結果輸出到螢幕上,干擾你的工作。如果放在後台執行的作業會產生大量的輸出,最好使用下面的方法把它的輸出重定向到某個檔案中:

command

> out.file 2>

&1 &

這樣,所有的標準輸出和錯誤輸出都將被重定向到乙個叫做out.file 的檔案中。

使用&命令後,作業被提交到後台執行,當前控制台沒有被占用,但是一但把當前控制台關掉(退出帳戶時),作業就會停止執行。nohup命令可以在你退出帳戶之後繼續執行相應的程序。nohup就是不掛起的意思( no hang up)。該命令的一般形式為:

nohup

command

&

如果使用nohup命令提交作業,那麼在預設情況下該作業的所有輸出都被重定向到乙個名為nohup.out的檔案中,除非另外指定了輸出檔案:

nohup

command

> myout.file 2>

&1 &

使用了nohup之後,很多人就這樣不管了,其實這樣有可能在當前賬戶非正常退出或者結束的時候,命令還是自己結束了。所以在使用nohup命令後台執行命令之後,需要使用exit正常退出當前賬戶,這樣才能保證命令一直在後台執行。

當你成功地提交程序以後,就會顯示出乙個程序號,可以用它來監控該程序,或殺死它。(ps -ef | grep 程序號 或者 kill -9 程序號)

當要查詢某個埠號被占用的情況時,使用命令:

netstat -loap |

grep

"埠號"

即可找到占用對應埠號的程序號,從而可以殺掉該程序。

echo

"start test_pack_processor"

nohup ./test_pack_processor &

sleep 10

ps -ef |

grep

"test_pack_processor"

|grep -v 'grep'

|awk''|

xargs

kill -sigint

# pidof test_pack_processor | xargs kill -sigint

在後台啟動test_pack_processor程序,在10s之後,找到該程序並向它傳送ctrl+c命令。

ctrl+z

可以將乙個正在前台執行的命令放到後台,並且處於暫停狀態。

所以使用這個命令不能結束乙個程序,相應的程序只是暫停,但是依然占用埠號!

ctrl+c

終止前台命令。

也可以向後台程序傳送該命令,表示結束該程序。

jobs

檢視當前有多少在後台執行的命令。

jobs -l選項可顯示所有任務的pid,jobs的狀態可以是running, stopped, terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的程序標識。

2>&1

command

>out.file 2>

&1 &

1、command>out.file是將command的輸出重定向到out.file檔案,即輸出內容不列印到螢幕上,而是輸出到out.file檔案中。

2、2>&1 是將標準出錯重定向到標準輸出,這裡的標準輸出已經重定向到了out.file檔案,即將標準出錯也輸出到out.file檔案中。最後乙個&, 是讓該命令在後台執行。

3、試想2>1代表什麼,2與》結合代表錯誤重定向,而1則代表錯誤重定向到乙個檔案1,而不代表標準輸出;換成2>&1,&與1結合就代表標準輸出了,就變成錯誤重定向到標準輸出。

linux後台執行之screen和nohup

如果你正在執行乙個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令.該命令可以在你退出帳戶 關閉終端之後繼續執行相應的程序.nohup就是不掛起的意思.我們現在開始啟動服務 python pyserver.py,並且希望在後台執行.我們就可以使用nohup,命令如下 1.no...

linux後台執行命令 和nohup

當我們在終端或控制台工作時,可能不希望由於執行乙個作業而佔住了螢幕,因為可能還有更重要的事情要做,比如閱讀電子郵件。對於密集訪問磁碟的程序,我們更希望它能夠在每天的非負荷高峰時間段執行 例如凌晨 為了使這些程序能夠在後台執行,也就是說不在終端螢幕上執行,有幾種選擇方法可供使用。nohup start...

linux後台執行命令 和nohup

command out.file 2 1 nohup command nohup command myout.file 2 1 ctrl c 終止前台命令。jobs 檢視當前有多少在後台執行的命令。jobs l選項可顯示所有任務的pid,jobs的狀態可以是running,stopped,termi...