linux使用nohup命令讓程式永遠停在後台

2021-06-02 23:39:44 字數 2794 閱讀 3471

今天使用ssh遠端部署專案,部署好了之後關掉終端,然後開啟網頁在操作時發現沒有服務,於是再一次登進終端,採用ps -ef|grep bea檢視之後,發現沒有了剛才的後台程序,作業系統是redhat 5.5,j2ee伺服器是weblogic。

於是網上查了很多資料最終我才用了下面的第一種方法,我個人比較喜歡第二種方法,因為它不用強制kill掉程序。

第一種方法:在startweblogic.sh目錄下,直接執行nohup ./startweblogic.sh&,命令就可以了。

[weblogic@localhost cmdsys]ps -ef|grep bea

退出的時候執行下面的命令就可以了

[weblogic@localhost cmdsys] kill -9 2312 2170 29379 29413

以下是原話:

「用使用者名稱和密碼登陸遠端計算機後,需要使用unix的命令tail -f 文字檔案名即可監視遠端檔案的變動情況,例如要監視weblogic某一域的日誌輸出只需要輸入命令:tail -f   nohup.out,前提是輸入命令的位置在該域的根目錄下並且啟動weblogic時指定輸出日誌資訊到nohup.out文字檔案中,也就是下面說的nohup啟動方式。  

使用nohup啟動weblogic伺服器:nohup ./startweblogic.sh&,不使用startweblogic.sh直接啟動的原因是如果直接啟動weblogic伺服器,那麼關掉ssh之後也會導致 weblogic伺服器的關閉,而使用nohup啟動會把weblogic啟動到後台並把其產生的日誌傳送到nohup.out檔案,而在ssh中只需要用tail -f nohup.out就可以檢視weblogic輸出的日誌資訊了「

第二種方法:使用screen指令

screen這個指令可以很好的解決跑後台服務的問題。

在終端中敲入如下命令

[weblogic@localhost ~]screen

,這個時候,伺服器端會啟乙個新的終端並且按ctrl+a+d就把會儲存這個會話,但這個終端,與之前的普通終端不一樣,它不隸屬於 sshd 程序組,這樣,當本地終端關閉後,伺服器終端不會被 kill。但上面的那個有乙個不好之處就是當會話多了很難分清楚,因此我們要用下面一種命令

[weblogic@localhost ~]screen  -s  sessionname

按ctrl+a+d儲存這個會話

這樣就可以用下面的命令

[weblogic@localhost ~]screen  -ls

sessionname.tty1.server        (detached)

當你想恢復乙個會話的時候你可以採用下面的命令

[weblogic@localhost ~]screen  -r sessionname

然後,退出鍵入exit就可以退出後台程序了。

附錄【注:該附錄為複製的,不屬於本人】:

使用nohup讓程式永遠後台執行

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

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

nohup /root/test.php &

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

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 關閉。

使用nohup讓linux命令在後台執行

nohup命令 具體用法 nohup command nohup.out 2 1 標準輸出和標準錯誤缺省會被重定向到 nohup.out 檔案中,加上 讓其後台執行,然後會返回其程序號 使用 jobs 檢視任務 使用fg n 關閉 使用jobs 檢視任務以後,會有乙個編號,我們使用fg 編號,可以把...

nohup命令使用

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

用Nohup命令讓Linux下的程式在後台執行

unix linux下一般想讓某個程式在後台執行,很多都是使用 在程式結尾來讓程式自動執行。比如我們要執行mysql在後台 usr local mysql bin mysqld safe user mysql 但是我們很多程式並不象mysqld一樣可以做成守護程序,可能我們的程式只是普通程式而已,一...