在工作中,我們很經(jīng)常跑一個(gè)很重要的程序,有時(shí)候這個(gè)程序需要跑好幾個(gè)小時(shí),甚至需要幾天,這個(gè)時(shí)候如果我們退出終端,或者網(wǎng)絡(luò)不好連接中斷,那么程序就會(huì)被中止。而這個(gè)情況肯定不是我們想看到的,我們希望即使終端關(guān)閉,程序依然可以在跑。
這時(shí)我們就可以使用nohup這個(gè)命令。
nohup命令是英語(yǔ)詞組no hangup的縮寫,意思是不掛斷,也就是指程序不退出。這個(gè)命令會(huì)使程序忽略HUP信號(hào),保證程序能夠正常進(jìn)行。HUP信號(hào)有些人可能比較陌生,它是在終端被中止的時(shí)候向它所關(guān)聯(lián)的進(jìn)程所發(fā)出的信號(hào),進(jìn)程收到這個(gè)信號(hào)后就會(huì)中止運(yùn)行。所以如果你不希望進(jìn)程被這個(gè)信號(hào)干掉的話,就可以忽略這個(gè)信號(hào)。而nohup命令做的就是這個(gè)事情。
本文我們將詳細(xì)介紹nohup命令的具體用法。
nohup命令基本語(yǔ)法
nohup 命令的基本語(yǔ)法如下:
$ nohup command arguments
或者:
$ nohup options
如果你想要得到更多關(guān)于 nohup 的用法介紹,可以查看它的幫助頁(yè)面:
$ nohup --help
如果你需要查看它的版本號(hào),可以使用--version選項(xiàng)。
$ nohup --version
使用nohup命令啟動(dòng)一個(gè)程序
如果你需要運(yùn)行一個(gè)程序,即使對(duì)應(yīng)的 Shell 被退出后依然保持運(yùn)行,可以這樣使用 nohup 運(yùn)行這個(gè)程序:
$ nohup command
當(dāng)這個(gè)程序進(jìn)行起來(lái)之后,這個(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)行之后,程序就無(wú)影無(wú)蹤了。想要讓程序重新回到終端,可以使用fg命令。
這個(gè)命令的輸出 log 將保存在 nohup.out 文件里,你可以使用 cat 或其它命令查看。第二行里 8699 這個(gè)數(shù)字代表這個(gè)命令對(duì)應(yīng)的進(jìn)程號(hào),也就是 pid 。我們可以使用ps命令來(lái)找到這個(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命令也行。
接下來(lái),再使用kill命令就可以終止該進(jìn)程了。
$kill -9 14942
-
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213830 -
終端
+關(guān)注
關(guān)注
1文章
1204瀏覽量
30905 -
程序
+關(guān)注
關(guān)注
117文章
3826瀏覽量
82996
原文標(biāo)題:Linux nohup 命令詳解,終端關(guān)閉程序依然可以在執(zhí)行!
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Linux ip命令常用操作
NIRSCANEVM在dlp_nirscan下執(zhí)行make命令時(shí),產(chǎn)生了報(bào)錯(cuò)怎么解決?
Linux實(shí)時(shí)查看日志的四種命令詳解

Linux grep命令詳解
Linux系統(tǒng)中shell命令解析
Linux lsof命令的基本用法

評(píng)論