nohup和 後台執行,程序檢視及終止

2021-08-21 10:19:32 字數 3522 閱讀 7160

1.nohup

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

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

無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。

如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $home/nohup.out 檔案中。

如果沒有檔案能建立或開啟以用於追加,那麼 command 引數指定的命令不可呼叫。

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

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

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

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

2.&用途:在後台執行

一般兩個一起用

nohup command &

eg:1

nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &

程序號7585

檢視執行的後台程序

(1)jobs -l

jobs命令只看當前終端生效的,關閉終端後,在另乙個終端jobs已經無法看到後台跑得程式了,此時利用ps(程序檢視命令)

(2)ps -ef 

1

ps -aux|grep chat.js

a:顯示所有程式 

u:以使用者為主的格式來顯示

x:顯示所有程式,不以終端機來區分

注:用ps -def | grep查詢程序很方便,最後一行總是會grep自己

用grep -v引數可以將grep命令排除掉

1

ps -aux|grep chat.js| grep -v grep

再用awk提取一下程序id 

1

ps -aux|grep chat.js| grep -v grep | awk''

3.如果某個程序起不來,可能是某個埠被占用

檢視使用某埠的程序

檢視到程序id之後,使用netstat命令檢視其占用的埠

使用kill殺掉進城後再啟動

4.終止後台執行的程序

1

kill -9  程序號

1.nohup.out的由來及作用

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

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

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

例子: nohup ./startweblogic.sh & 意思是即使退出ssh介面,命令仍然在後台執行,並且列印過程日誌到nohup.out,當然也可以將nohup.out的輸出轉向到其他檔案,高階應用請參考擴充套件閱讀。

2.nohup.out的檢視方式與方法

實際使用過程中,往往人們為了省心(嗯,沒錯,就是懶),經常沒有給nohup.out進行重定向輸出,也沒有按日期分割檔案,會造成這個檔案特別巨大,達到2g或者3g,這個使用想檢視檔案,搜尋出錯內容就比較痛苦了。一般有兩種方式

1.linux本機檢視:使用tail 命令,檢視最新的日誌,或滾動監控日誌列印。

例如命令 tail -1000 nohup.out (檢視最後1000行日誌文字) tail -f nohup.out(監控日誌列印)

3.nohup.out維護管理方法(清空nohup.out)如上文所述出現了超大號的檔案簡直是令人討厭的事情,而且nohup.out會一直一直自己增長下去,如果你的伺服器硬碟不給力的話,很容易把應用也掛掉(硬碟沒空間 ,啥都玩不轉),但是又不能一味的直接刪。因為直接刪除,可能會造成應用無法列印後續的錯誤日誌,該問題常見於weblogic伺服器,jboss伺服器等這些大型中介軟體,這個在生產環境上要尤為注意。

因此就有了我們不停止服務直接,清空nohup.out檔案的方法。

兩個可以不用停止web服務就可以清空nohup.out的命令。

第一種:cp /dev/null nohup.out

第二種:cat /dev/null > nohup.out

兩個我都用過,不用擔心網上所說的效能問題,通常2/3 個g的檔案都是1-2秒執行完畢

4.擴充套件閱讀

1.nohup的重定向,一勞永逸解決nohup.out檔案過大的問題

以下是定義日誌列印級別,除了高於級別2的告警資訊記錄到log檔案外,其餘直接不記錄

//只輸出錯誤資訊到日誌檔案

nohup ./program >/dev/

null

2>log &

//什麼資訊也不要

nohup ./program >/dev/

null

2>&1 &

2.linux的3種重定向

0:表示標準輸入

1:標準輸出,在一般使用時,預設的是標準輸出

2:標準錯誤資訊輸出

可以用來指定需要重定向的標準輸入或輸出。例如,將某個程式的錯誤資訊輸出到log檔案中:./program 2>log。這樣標準輸出還是在螢幕上,但是錯誤資訊會輸出到log檔案中。另外,也可以實現0,1,2之間的重定向。2>&1:將錯誤資訊重定向到標準輸出。

3.關於/dev/null檔案

linux下還有乙個特殊的檔案/dev/null,它就像乙個無底洞,所有重定向到它的資訊都會消失得無影無蹤。這一點非常有用,當我們不需要回顯程式的所有資訊時,就可以將輸出重定向到/dev/null。

nohup和 後台執行,程序檢視及終止

1.nohup 用途 不結束通話地執行命令。語法 nohup command arg 無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 home nohup.out 檔案中。如果沒有檔案...

nohup和 後台執行,程序檢視及終止

用途 不結束通話地執行命令。語法 nohup command arg 無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 home nohup.out 檔案中。如果沒有檔案能建立或開啟以用...

nohup和 後台執行,程序檢視及終止

1.nohup 用途 不結束通話地執行命令。語法 nohup command arg 無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 home nohup.out 檔案中。如果沒有檔案...