• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Error

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

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

            先說一下linux重定向:
            0、1和2分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤信息輸出,可以用來指定需要重定向的標(biāo)準(zhǔn)輸入或輸出。
            在一般使用時(shí),默認(rèn)的是標(biāo)準(zhǔn)輸出,既1.當(dāng)我們需要特殊用途時(shí),可以使用其他標(biāo)號(hào)。例如,將某個(gè)程序的錯(cuò)誤信息輸出到log文件中:./program 2>log。這樣標(biāo)準(zhǔn)輸出還是在屏幕上,但是錯(cuò)誤信息會(huì)輸出到log文件中。
            另外,也可以實(shí)現(xiàn)0,1,2之間的重定向。2>&1:將錯(cuò)誤信息重定向到標(biāo)準(zhǔn)輸出。
            Linux下還有一個(gè)特殊的文件/dev/null,它就像一個(gè)無底洞,所有重定向到它的信息都會(huì)消失得無影無蹤。這一點(diǎn)非常有用,當(dāng)我們不需要回顯程序的所有信息時(shí),就可以將輸出重定向到/dev/null。

            如果想要正常輸出和錯(cuò)誤信息都不顯示,則要把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤都重定向到/dev/null, 例如:

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

            還有一種做法是將錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出,然后再重定向到 /dev/null,例如:

            # ls >/dev/null 2>&1

            注意:此處的順序不能更改,否則達(dá)不到想要的效果,此時(shí)先將標(biāo)準(zhǔn)輸出重定向到 /dev/null,然后將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出,由于標(biāo)準(zhǔn)輸出已經(jīng)重定向到了/dev/null,因此標(biāo)準(zhǔn)錯(cuò)誤也會(huì)重定向到/dev/null,于是一切靜悄悄:-)

             

            由于使用nohup時(shí),會(huì)自動(dòng)將輸出寫入nohup.out文件中,如果文件很大的話,nohup.out就會(huì)不停的增大,這是我們不希望看到的,因此,可以利用/dev/null來解決這個(gè)問題。

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

            如果錯(cuò)誤信息也不想要的話:

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






            要實(shí)現(xiàn)守護(hù)進(jìn)程,一種方法是按守護(hù)進(jìn)程的規(guī)則去編程(本站有文章介紹過),比較麻煩;另一種方法是仍然用普通方法編程,然后用nohup命令啟動(dòng)程序:
            nohup <程序名> &
            則控制臺(tái)logout后,進(jìn)程仍然繼續(xù)運(yùn)行,起到守護(hù)進(jìn)程的作用(雖然它不是嚴(yán)格意義上的守護(hù)進(jìn)程)。
            使用nohup命令后,原程序的的標(biāo)準(zhǔn)輸出被自動(dòng)改向到當(dāng)前目錄下的nohup.out文件,起到了log的作用,實(shí)現(xiàn)了完整的守護(hù)進(jìn)程功能。

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

            For example:
            如何遠(yuǎn)程啟動(dòng)WebLogic服務(wù)?

            用telnet遠(yuǎn)程控制服務(wù)器,遠(yuǎn)程啟動(dòng)WEBLOGIC服務(wù),啟動(dòng)后關(guān)閉telnet,WebLogic服務(wù)也跟著停止,這是因?yàn)槭褂胻elnet啟動(dòng)的進(jìn)程會(huì)隨著telnet進(jìn)程的關(guān)閉而關(guān)閉。所以我們可以使用一些UNIX下的命令來做到不關(guān)閉。

            使用如下命令:

            nohup startWeblogic.sh&

            如果想要監(jiān)控標(biāo)準(zhǔn)輸出可以使用:

            tail -f nohup.out


            訪客留言

            FreeBSD可以同時(shí)運(yùn)行多個(gè)進(jìn)程,在shell下直接輸入命令后,shell將進(jìn)程放到前臺(tái)執(zhí)行。如果要將進(jìn)程放到后臺(tái)執(zhí)行,需要在命令行的結(jié)尾加上一個(gè) “&” 符號(hào)。下面的命令從后臺(tái)執(zhí)行,從ftp.isc.org下載文件。

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

            當(dāng)程序已經(jīng)在前臺(tái)執(zhí)行的時(shí)候,可以使用^Z將這個(gè)程序掛起,暫停執(zhí)行。然后可以使用bg命令將這個(gè)掛起的程序放到后臺(tái)執(zhí)行,或者使用fg將某個(gè)在后臺(tái)或掛起的進(jìn)程放到前臺(tái)執(zhí)行。

            當(dāng)在后臺(tái)運(yùn)行了程序的時(shí)候,可以用jobs命令來查看后臺(tái)作業(yè)的狀態(tài)。在有多個(gè)后臺(tái)程序時(shí),要使用來參數(shù)的fg命令將不同序號(hào)的后臺(tái)作業(yè)切換到前臺(tái)上運(yùn)行。

            $ 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

            在啟動(dòng)了多個(gè)程序之后,可以使用ps命令來查看這些進(jìn)程及其狀態(tài)。

            $ 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)

            顯示的結(jié)果包括進(jìn)程的標(biāo)識(shí)號(hào)PID,控制終端TT(p0表示控制終端為ttyp0),進(jìn)程的狀態(tài)STAT,進(jìn)程使用的處理器時(shí)間TIME和具體的命令。

            可以給ps命令加上參數(shù),來獲得更多的輸出內(nèi)容,以下命令將輸出系統(tǒng)中所有的進(jìn)程:

            $ 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)

            當(dāng)用戶啟動(dòng)一個(gè)進(jìn)程的時(shí)候,這個(gè)進(jìn)程是運(yùn)行在前臺(tái),使用與相應(yīng)控制終端相聯(lián)系的標(biāo)準(zhǔn)輸入、輸出進(jìn)行輸入和輸出。即使將進(jìn)程的輸入輸出重定向,并將進(jìn)程放在后臺(tái)執(zhí)行,進(jìn)程仍然和當(dāng)前終端設(shè)備有關(guān)系。正因?yàn)槿绱耍诋?dāng)前的登錄會(huì)話結(jié)束時(shí),控制終端設(shè)備將和登錄進(jìn)程相脫離,那么系統(tǒng)就向所有與這個(gè)終端相聯(lián)系的進(jìn)程發(fā)送SIGHUP的信號(hào),通知進(jìn)程線路已經(jīng)掛起了,如果程序沒有接管這個(gè)信號(hào)的處理,那么缺省的反應(yīng)是進(jìn)程結(jié)束。因此普通的程序并不能真正脫離登錄會(huì)話而運(yùn)行進(jìn)程,為了使得在系統(tǒng)登錄后還可以正常執(zhí)行,只有使用命令nohup來啟動(dòng)相應(yīng)程序。

            從上面的ps的輸出結(jié)果可以看出,有些程序沒有控制終端,這些程序通常是一些后臺(tái)進(jìn)程。使用命令nohup當(dāng)然可以啟動(dòng)這樣的程序,但nohup啟動(dòng)的程序在進(jìn)程執(zhí)行完畢就退出,而常見的一些服務(wù)進(jìn)程通常永久的運(yùn)行在后臺(tái),不向屏幕輸出結(jié)果。在Unix中這些永久的后臺(tái)進(jìn)程稱為守護(hù)進(jìn)程(daemon)。守護(hù)進(jìn)程通常從系統(tǒng)啟動(dòng)時(shí)自動(dòng)開始執(zhí)行,系統(tǒng)關(guān)閉時(shí)才停止。如果偶然某個(gè)守護(hù)進(jìn)程消失了,那么它提供的服務(wù)將不再能被使用。

            在守護(hù)進(jìn)程中,最重要的一個(gè)是超級(jí)守護(hù)進(jìn)程inetd,這個(gè)進(jìn)程接管了大部分網(wǎng)絡(luò)服務(wù),但并不是對(duì)每個(gè)服務(wù)都自己進(jìn)行處理,而是依據(jù)連接請(qǐng)求,啟動(dòng)不同的服務(wù)程序與客戶機(jī)打交道。inetd支持網(wǎng)絡(luò)服務(wù)種類在它的設(shè)置文件/etc/inet.conf中定義。inet.conf文件中的每一行就對(duì)應(yīng)一個(gè)端口地址,當(dāng)inetd接受到連接這個(gè)端口的連接請(qǐng)求時(shí),就啟動(dòng)相應(yīng)的進(jìn)程進(jìn)行處理。使用inetd的好處是系統(tǒng)不必啟動(dòng)很多守護(hù)進(jìn)程,從而節(jié)約了系統(tǒng)資源,然而使用inetd啟動(dòng)守護(hù)進(jìn)程相應(yīng)反應(yīng)會(huì)遲緩一些,不適合用于被密集訪問的服務(wù)進(jìn)程

             

            posted on 2012-12-05 09:49 Enic 閱讀(15041) 評(píng)論(0)  編輯 收藏 引用 所屬分類: linux
            久久影视国产亚洲| 丁香狠狠色婷婷久久综合| 久久99精品国产麻豆婷婷| 久久影视国产亚洲| 亚洲国产精品无码久久98| 精品久久久久久国产潘金莲 | 久久福利青草精品资源站免费| 久久精品国产亚洲77777| 国产精品久久久久久久久| 久久久不卡国产精品一区二区| 久久人人爽人人人人片av| 99re这里只有精品热久久| 亚洲国产精品一区二区三区久久| av无码久久久久久不卡网站| 久久99精品九九九久久婷婷| 久久99精品久久久久久动态图| 人妻精品久久久久中文字幕| 国产精品一区二区久久| 久久精品国产乱子伦| 久久久久久无码国产精品中文字幕| 色综合久久无码五十路人妻| 亚洲精品无码专区久久同性男| 99久久国产热无码精品免费| 精品久久久一二三区| 国产综合免费精品久久久| 久久人人爽人人爽人人片AV不 | 久久精品国产乱子伦| 久久综合伊人77777| 九九热久久免费视频| 91精品观看91久久久久久| 情人伊人久久综合亚洲| 久久久久国产精品熟女影院| 狠狠色婷婷久久综合频道日韩 | 久久午夜福利电影| 久久国产高清一区二区三区| 91精品观看91久久久久久| 91精品国产色综久久| 一级做a爰片久久毛片16| 一本久久久久久久| 国产精品伊人久久伊人电影| 久久国产精品一区|