新聞中心
過Linux的人應(yīng)該都知道,如果想讓一個(gè)程序在后臺(tái)運(yùn)行,只要在執(zhí)行命令的末尾加上一個(gè)&符號(hào)就可以了。但是這種方式不是很保險(xiǎn),有些程序當(dāng)你登出終端后它就會(huì)停止。那么如何讓一個(gè)程序真正永遠(yuǎn)在后臺(tái)執(zhí)行呢。答案就是使用 nohub 命令.

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供武漢網(wǎng)站建設(shè)、武漢做網(wǎng)站、武漢網(wǎng)站設(shè)計(jì)、武漢網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、武漢企業(yè)網(wǎng)站模板建站服務(wù),10多年武漢做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
nohup命令基本語法
nohup 命令的基本語法如下:
$ nohup command arguments
或
$ nohup options
如果你想要得到更多關(guān)于 nohup 的用法介紹,可以查看它的幫助頁(yè)面:
$ nohup --help
使用nohup命令啟動(dòng)一個(gè)程序
如果你需要運(yùn)行一個(gè)程序,即使對(duì)應(yīng)的 Shell 被退出后依然保持運(yùn)行,可以這樣使用 nohup 運(yùn)行這個(gè)程序:
$ nohup command
當(dāng)這個(gè)程序進(jìn)行起來之后,這個(gè)程序?qū)?yīng)的 log 輸出及其錯(cuò)誤日志都將被記錄在 nohup.out 文件里,這個(gè)文件一般位于家目錄或者當(dāng)前目錄。
重定向程序的輸出
如果我不想把程序的輸出保存在家目錄或者當(dāng)前目錄,我想保存在我指定的路徑,并且自定義文件名,要怎么操作?這時(shí)我們就可以使用重定向操作 > 。
比如,我現(xiàn)在有個(gè)腳本 myScript.sh 我想把它的輸出保存在家目錄下的 output 目錄下,文件名為 myOutput.txt ,可以這樣運(yùn)行:
$ nohup ./myScript.sh > ~/output/myOutput.txt
使用nohup命令后臺(tái)啟動(dòng)一個(gè)程序
如果想讓程序在后臺(tái)運(yùn)行,可以加上 & 符號(hào)。但這樣運(yùn)行之后,程序就無影無蹤了。想要讓程序重新回到終端,可以使用 fg 命令。
這個(gè)命令的輸出 log 將保存在 nohup.out 文件里,你可以使用 cat 或其它命令查看。第二行里 8699 這個(gè)數(shù)字代表這個(gè)命令對(duì)應(yīng)的進(jìn)程號(hào),也就是 pid 。我們可以使用 ps 命令來找到這個(gè)進(jìn)程。
使用nohup同時(shí)運(yùn)行多個(gè)程序
如果你需要同時(shí)跑多個(gè)程序,沒必要一個(gè)個(gè)運(yùn)行,直接使用 && 符號(hào)即可。比如,你想同時(shí)跑 mkdir ,ping,ls 三個(gè)命令,可以這樣運(yùn)行:
$ nohup bash -c 'mkdir files && ping -c 1 baidu.com && ls'> output.txt
終止跑在后臺(tái)的進(jìn)程
上面有提到,nohup 命令結(jié)合 & 符號(hào)可以使進(jìn)程在后臺(tái)運(yùn)行,即使關(guān)閉了終端依然不受影響。這時(shí),如果想要終止這個(gè)進(jìn)程,要怎么操作呢?
最簡(jiǎn)單的當(dāng)屬 kill 命令,相信大家用過很多次了。
$kill -9 PID
那要如何找到進(jìn)程對(duì)應(yīng)的 pid 呢?我們可以使用 ps 命令。
$ ps aux | grep myScript.sh
或者你使用 pgrep 命令也行。 接下來,再使用 kill 命令就可以終止該進(jìn)程了。
$kill -9 14942
本文標(biāo)題:詳解Linuxnohub命令
分享地址:http://www.5511xx.com/article/ccioshh.html


咨詢
建站咨詢
