天天看點

菜鳥學Linux指令:nohup指令啟動程式

在unix/linux中,普通程序用&符号放到背景運作,如果啟動該程式的控制台logout,則該程序随即終止。

要實作守護程序,一種方法是按守護程序的規則去程式設計,比較麻煩;

另一種方法是仍然用普通方法程式設計,然後用nohup指令啟動程式:

nohup <程式名> &

則控制台logout後,程序仍然繼續運作,起到守護程序的作用(雖然它不是嚴格意義上的守護程序)。

使用nohup指令後,原程式的的标準輸出被自動改向到目前目錄下的nohup.out檔案,起到了log的作用,實作了完整的守護程序功能。

用途:不挂斷的在背景運作指令,類似守護程序

文法: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就是不挂起的意思( n ohang up)。

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

nohup command > myout.file 2>&1 &

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

用telnet遠端控制伺服器,遠端啟動weblogic服務,啟動後關閉telnet,weblogic服務也跟着停止,這是因為使用telnet啟動的程序會随着telnet程序的關閉而關閉。是以我們可以使用一些unix下的指令來做到不關閉。

使用如下指令:

nohup startweblogic.sh &

如果想要監控标準輸出可以使用:

tail -f nohup.out

繼續閱讀