Linux下使Shell 命令脫離終端在後台執行

2021-07-01 19:08:41 字數 1469 閱讀 7715

因為我購買的乙個國外主機居然開放了telnet許可權,因此我也使用telnet登入上去玩玩linux,但發現一關閉視窗就自動和主機斷開了,和windows的終端不一樣,所以就上網找啊找,找到了乙個從後台一直執行某個程式的方法。

unix/linux下一般比如想讓某個程式在後台執行,很多都是使用 & 在程式結尾來讓程式自動執行。比如我們要執行mysql在後台:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

但是加入我們很多程式並不象mysqld一樣做成守護程序,可能我們的程式只是普通程式而已,一般這種程式使用 & 結尾,但是如果終端關閉,那麼程式也會被關閉。但是為了能夠後台執行,那麼我們就可以使用nohup這個命令,比如我們有個test.php需要在後台執行,並且希望在後台能夠定期執行,那麼就使用nohup:

nohup /root/test.php &

嗯,證明執行成功,同時把程式執行的輸出資訊放到當前目錄的 nohup.out 檔案中去。

附:nohup命令參考

nohup 命令

用途:不結束通話地執行命令。

語法:nohup command [ arg ... ] [ & ]

描述:nohup 命令執行由 command 引數和任何相關的 arg 引數指定的命令,忽略所有結束通話(sighup)訊號。在登出後使用 nohup 命令執行後台中的程式。要執行後台中的 nohup 命令,新增 & ( 表示「and」的符號)到命令的尾部。

無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $home/nohup.out 檔案中。如果沒有檔案能建立或開啟以用於追加,那麼 command 引數指定的命令不可呼叫。如果標準錯誤是乙個終端,那麼把指定的命令寫給標準錯誤的所有輸出作為標準輸出重定向到相同的檔案描述符。

退出狀態:該命令返回下列出口值:

126 可以查詢但不能呼叫 command 引數指定的命令。

127 nohup 命令發生錯誤或不能查詢由 command 引數指定的命令。

否則,nohup 命令的退出狀態是 command 引數指定命令的退出狀態。

nohup命令及其輸出檔案

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

該命令的一般形式為:nohup command &

使用nohup命令提交作業

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

nohup command > myout.file 2>&1 &

在上面的例子中,輸出被重定向到myout.file檔案中。

使用 jobs 檢視任務。

使用 fg %n 關閉。

Linux下使Shell 命令脫離終端在後台執行

我們都知道,在 windows 上面,我們要麼讓乙個程式作為服務在後台一直執行,要麼停止這個服務。而不能讓程式在前台後台之間切換。而 linux 提供了 fg fore ground 和 bg 命令,讓我們輕鬆排程正在執行的任務。假設你發現前台執行的乙個程式需要很長的時間,但是需要幹其他的事情,你就...

Linux下使Shell 命令脫離終端在後台執行

用python寫了乙個的小監控程式,監控公司生產系統對外web訪問的狀況,以及某個特定業務的狀況。程式部署在阿里雲的一台虛擬機器上,簡單的用終端命令開啟,結果幾天後發現監控程式才執行幾個小時就退出了,原來是terminal session過期後,程式自動退出。linux下使shell 命令脫離終端在...

linux下shell指令碼中sed命令使用變數

用linpack做測試,寫了乙個指令碼,因為每次可修改的引數寫在了配置檔案裡,所以指令碼裡用sed命令來修改配置檔案 測試次數 echo input number of tests read numt 每次測試的資料規模,測試次數有多少次,這裡應該又多少組數字,中間以空格隔開 echo input ...