Linux使用nohup命令讓程序停在后臺 |
發(fā)布時間: 2012/8/9 16:03:39 |
今天使用SSH遠(yuǎn)程部署項目,部署好了之后關(guān)掉終端,然后打開網(wǎng)頁在操作時發(fā)現(xiàn)沒有服務(wù),于是再一次登進(jìn)終端,采用ps -ef|grep bea查看之后,發(fā)現(xiàn)沒有了剛才的后臺進(jìn)程,操作系統(tǒng)是Redhat 5.5,J2EE服務(wù)器是Weblogic.于是網(wǎng)上查了很多資料最終我才用了下面的第一種方法,我個人比較喜歡第二種方法,因為它不用強(qiáng)制kill掉進(jìn)程。 第一種方法:在startWeblogic.sh目錄下,直接執(zhí)行nohup ./startWebLogic.sh&,命令就可以了。 [weblogic@localhost cmdsys]ps -ef|grep bea 退出的時候執(zhí)行下面的命令就可以了[weblogic@localhost cmdsys] kill -9 2312 2170 29379 29413以下是原話:“用用戶名和密碼登陸遠(yuǎn)程計算機(jī)后,需要使用Unix的命令tail -f 文本文件名即可監(jiān)視遠(yuǎn)程文件的變動情況,例如要監(jiān)視Weblogic某一域的日志輸出只需要輸入命令:tail -f nohup.out,前提是輸入命令的位置在該域的根目錄下并且啟動Weblogic時指定輸出日志信息到nohup.out文本文件中,也就是下面說的nohup啟動方式。 使用nohup啟動Weblogic服務(wù)器:nohup ./startWebLogic.sh&,不使用startWebLogic.sh直接啟動的原因是如果直接啟動Weblogic服務(wù)器,那么關(guān)掉SSH之后也會導(dǎo)致 WebLogic服務(wù)器的關(guān)閉,而使用nohup啟動會把Weblogic啟動到后臺并把其產(chǎn)生的日志發(fā)送到nohup.out文件,而在SSH中只需要用tail -f nohup.out就可以查看Weblogic輸出的日志信息了“第二種方法:使用screen 指令screen 這個指令可以很好的解決跑后臺服務(wù)的問題。 在終端中敲入如下命令[weblogic@localhost ~]screen,這個時候,服務(wù)器端會啟一個新的終端并且按ctrl+a+d就把會保存這個會話,但這個終端,與之前的普通終端不一樣,它不隸屬于 sshd 進(jìn)程組,這樣,當(dāng)本地終端關(guān)閉后,服務(wù)器終端不會被 kill.但上面的那個有一個不好之處就是當(dāng)會話多了很難分清楚,因此我們要用下面一種命令[weblogic@localhost ~]screen -S sessionname按ctrl+a+d保存這個會話這樣就可以用下面的命令[weblogic@localhost ~]screen -ls sessionname.tty1.server (Detached) 當(dāng)你想恢復(fù)一個會話的時候你可以采用下面的命令[weblogic@localhost ~]screen -r sessionname然后,退出鍵入exit就可以退出后臺進(jìn)程了。 附錄「注:該附錄為復(fù)制的,不屬于本人」:使用nohup讓程序永遠(yuǎn)后臺運(yùn)行Unix/Linux下一般比如想讓某個程序在后臺運(yùn)行,很多都是使用 & 在程序結(jié)尾來讓程序自動運(yùn)行。比如我們要運(yùn)行mysql在后臺:/usr/local/mysql/bin/mysqld_safe ——user=mysql &但是加入我們很多程序并不象mysqld一樣做成守護(hù)進(jìn)程,可能我們的程序只是普通程序而已,一般這種程序使用 & 結(jié)尾,但是如果終端關(guān)閉,那么程序也會被關(guān)閉。但是為了能夠后臺運(yùn)行,那么我們就可以使用nohup這個命令,比如我們有個test.php需要在后臺運(yùn)行,并且希望在后臺能夠定期運(yùn)行,那么就使用nohup:nohup /root/test.php &提示:[~]$ appending output to nohup.out嗯,證明運(yùn)行成功,同時把程序運(yùn)行的輸出信息放到當(dāng)前目錄的 nohup.out 文件中去。 附:nohup命令參考nohup 命令用途:不掛斷地運(yùn)行命令。 語法:nohup Command [ Arg …… ] [ & ]描述:nohup 命令運(yùn)行由 Command 參數(shù)和任何相關(guān)的 Arg 參數(shù)指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運(yùn)行后臺中的程序。要運(yùn)行后臺中的 nohup 命令,添加 & ( 表示“and”的符號)到命令的尾部。 無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當(dāng)前目錄的 nohup.out 文件中。如果當(dāng)前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。如果沒有文件能創(chuàng)建或打開以用于追加,那么 Command 參數(shù)指定的命令不可調(diào)用。如果標(biāo)準(zhǔn)錯誤是一個終端,那么把指定的命令寫給標(biāo)準(zhǔn)錯誤的所有輸出作為標(biāo)準(zhǔn)輸出重定向到相同的文件描述符。 退出狀態(tài):該命令返回下列出口值:126 可以查找但不能調(diào)用 Command 參數(shù)指定的命令。 127 nohup 命令發(fā)生錯誤或不能查找由 Command 參數(shù)指定的命令。 否則,nohup 命令的退出狀態(tài)是 Command 參數(shù)指定命令的退出狀態(tài)。 nohup命令及其輸出文件nohup命令:如果你正在運(yùn)行一個進(jìn)程,而且你覺得在退出帳戶時該進(jìn)程還不會結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。nohup就是不掛起的意思( n ohang up)。 該命令的一般形式為:nohup command &使用nohup命令提交作業(yè)如果使用nohup命令提交作業(yè),那么在缺省情況下該作業(yè)的所有輸出都被重定向到一個名為nohup.out的文件中,除非另外指定了輸出文件:nohup command > myout.file 2>&1 &在上面的例子中,輸出被重定向到myout.file文件中。 使用 jobs 查看任務(wù)。 使用 fg %n 關(guān)閉。 另外有兩個常用的ftp工具ncftpget和ncftpput,可以實(shí)現(xiàn)后臺的ftp上傳和下載,這樣我就可以利用這些命令在后臺上傳和下載文件了。 本文出自:億恩科技【www.laynepeng.cn】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |