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