inux重定向及nohup不輸出的方法

inux重定向及nohup不輸出的方法

先說一下linux重定向:
0、1和2分別表示標準輸入、標準輸出和標準錯誤信息輸出,能夠用來指定須要重定向的標準輸入或輸出。
在通常使用時,默認的是標準輸出,既1.當咱們須要特殊用途時,可使用其餘標號。例如,將某個程序的錯誤信息輸出到log文件中:./program 2>log。這樣標準輸出仍是在屏幕上,可是錯誤信息會輸出到log文件中。
另外,也能夠實現0,1,2之間的重定向。2>&1:將錯誤信息重定向到標準輸出。
Linux下還有一個特殊的文件/dev/null,它就像一個無底洞,全部重定向到它的信息都會消失得無影無蹤。這一點很是有用,當咱們不須要回顯程序的全部信息時,就能夠將輸出重定向到/dev/null。

若是想要正常輸出和錯誤信息都不顯示,則要把標準輸出和標準錯誤都重定向到/dev/null, 例如:linux

# ls 1>/dev/null 2>/dev/nullshell

還有一種作法是將錯誤重定向到標準輸出,而後再重定向到 /dev/null,例如:編程

# ls >/dev/null 2>&1bash

注意:此處的順序不能更改,不然達不到想要的效果,此時先將標準輸出重定向到 /dev/null,而後將標準錯誤重定向到標準輸出,因爲標準輸出已經重定向到了/dev/null,所以標準錯誤也會重定向到/dev/null,因而一切靜悄悄:-)服務器

 

因爲使用nohup時,會自動將輸出寫入nohup.out文件中,若是文件很大的話,nohup.out就會不停的增大,這是咱們不但願看到的,所以,能夠利用/dev/null來解決這個問題。網絡

nohup ./program >/dev/null 2>log &app

若是錯誤信息也不想要的話:post

nohup ./program >/dev/null 2>&1 &






要實現守護進程,一種方法是按守護進程的規則去編程(本站有文章介紹過),比較麻煩;另外一種方法是仍然用普通方法編程,而後用nohup命令啓動程序: 
nohup <程序名> & 
則控制檯logout後,進程仍然繼續運行,起到守護進程的做用(雖然它不是嚴格意義上的守護進程)。
使用nohup命令後,原程序的的標準輸出被自動改向到當前目錄下的nohup.out文件,起到了log的做用,實現了完整的守護進程功能。fetch

ygwu @ 2005年04月18日 上午10:03 

For example:
如何遠程啓動WebLogic服務?

用telnet遠程控制服務器,遠程啓動WEBLOGIC服務,啓動後關閉telnet,WebLogic服務也跟着中止,這是由於使用telnet啓動的進程會隨着telnet進程的關閉而關閉。因此咱們可使用一些UNIX下的命令來作到不關閉。spa

使用以下命令:

nohup startWeblogic.sh&

若是想要監控標準輸出可使用:

tail -f nohup.out


訪客留言

FreeBSD能夠同時運行多個進程,在shell下直接輸入命令後,shell將進程放到前臺執行。若是要將進程放到後臺執行,須要在命令行的結尾加上一個 「&」 符號。下面的命令從後臺執行,從ftp.isc.org下載文件。

$ fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &

當程序已經在前臺執行的時候,可使用^Z將這個程序掛起,暫停執行。而後可使用bg命令將這個掛起的程序放到後臺執行,或者使用fg將某個在後臺或掛起的進程放到前臺執行。

當在後臺運行了程序的時候,能夠用jobs命令來查看後臺做業的狀態。在有多個後臺程序時,要使用來參數的fg命令將不一樣序號的後臺做業切換到前臺上運行。

$ jobs

[1]+ Running fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &

$ fg %1

fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz

在啓動了多個程序以後,可使用ps命令來查看這些進程及其狀態。

$ ps

PID TT STAT TIME COMMAND

501 p2 Ss 0:00.24 -bash (bash)

988 p2 R+ 0:00.00 ps

765 p3 Is+ 0:00.28 -bash (bash)

230 v0 Is+ 0:00.14 -bash (bash)

顯示的結果包括進程的標識號PID,控制終端TT(p0表示控制終端爲ttyp0),進程的狀態STAT,進程使用的處理器時間TIME和具體的命令。

能夠給ps命令加上參數,來得到更多的輸出內容,如下命令將輸出系統中全部的進程:

$ ps waux

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND

wb 989 0.0 0.4 400 236 p2 R+ 5:48PM 0:00.00 ps -aux

root 1 0.0 0.1 496 72 ?? Is 10:12PM 0:00.02 /sbin/init --

root 2 0.0 0.0 0 0 ?? DL 10:12PM 0:07.05 (pagedaemon)

root 3 0.0 0.0 0 0 ?? DL 10:12PM 0:00.20 (vmdaemon)

root 4 0.0 0.0 0 0 ?? DL 10:12PM 0:04.27 (syncer)

root 27 0.0 0.0 204 0 ?? IWs - 0:00.00 (adjkerntz)

root 91 0.0 0.5 820 328 ?? Is 2:12PM 0:00.82 syslogd

daemon 100 0.0 0.0 792 0 ?? IWs - 0:00.00 (portmap)

root 131 0.0 0.3 864 164 ?? Is 2:12PM 0:00.06 inetd

root 134 0.0 0.3 980 192 ?? Is 2:12PM 0:00.11 cron

root 138 0.0 0.6 1252 380 ?? Is 2:12PM 0:00.11 sendmail: accepti

wb 230 0.0 1.1 1540 668 v0 Is+ 2:12PM 0:00.14 -bash (bash)

root 231 0.0 0.0 824 0 v1 IWs+ - 0:00.00 (getty)

root 232 0.0 0.0 824 0 v2 IWs+ - 0:00.00 (getty)

root 500 0.0 0.9 876 524 ?? Ss 4:19PM 0:01.78 telnetd

wb 501 0.0 1.4 1540 888 p2 Ss 4:19PM 0:00.24 -bash (bash)

root 698 0.0 1.5 1644 900 ?? Is 4:49PM 0:00.02 /usr/local/sbin/s

root 700 0.0 1.2 1308 748 ?? Ss 4:49PM 0:00.22 /usr/local/sbin/n

root 702 0.0 3.4 2900 2112 ?? S 4:49PM 0:00.32 /usr/local/sbin/s

root 764 0.0 0.9 880 540 ?? Is 5:10PM 0:00.22 telnetd

wb 765 0.0 1.7 1536 1052 p3 Is+ 5:10PM 0:00.28 -bash (bash)

root 0 0.0 0.0 0 0 ?? DLs 10:12PM 0:00.02 (swapper)

當用戶啓動一個進程的時候,這個進程是運行在前臺,使用與相應控制終端相聯繫的標準輸入、輸出進行輸入和輸出。即便將進程的輸入輸出重定向,並將進程放在後臺執行,進程仍然和當前終端設備有關係。正由於如此,在當前的登陸會話結束時,控制終端設備將和登陸進程相脫離,那麼系統就向全部與這個終端相聯繫的進程發送SIGHUP的信號,通知進程線路已經掛起了,若是程序沒有接管這個信號的處理,那麼缺省的反應是進程結束。所以普通的程序並不能真正脫離登陸會話而運行進程,爲了使得在系統登陸後還能夠正常執行,只有使用命令nohup來啓動相應程序。

從上面的ps的輸出結果能夠看出,有些程序沒有控制終端,這些程序一般是一些後臺進程。使用命令nohup固然能夠啓動這樣的程序,但nohup啓動的程序在進程執行完畢就退出,而常見的一些服務進程一般永久的運行在後臺,不向屏幕輸出結果。在Unix中這些永久的後臺進程稱爲守護進程(daemon)。守護進程一般從系統啓動時自動開始執行,系統關閉時才中止。若是偶然某個守護進程消失了,那麼它提供的服務將再也不能被使用。

在守護進程中,最重要的一個是超級守護進程inetd,這個進程接管了大部分網絡服務,但並非對每一個服務都本身進行處理,而是依據鏈接請求,啓動不一樣的服務程序與客戶機打交道。inetd支持網絡服務種類在它的設置文件/etc/inet.conf中定義。inet.conf文件中的每一行就對應一個端口地址,當inetd接受到鏈接這個端口的鏈接請求時,就啓動相應的進程進行處理。使用inetd的好處是系統沒必要啓動不少守護進程,從而節約了系統資源,然而使用inetd啓動守護進程相應反應會遲緩一些,不適合用於被密集訪問的服務進程

相關文章
相關標籤/搜索