你們好,我是良許。程序員
在工做中,咱們很常常跑一個很重要的程序,有時候這個程序須要跑好幾個小時,甚至須要幾天,這個時候若是咱們退出終端,或者網絡很差鏈接中斷,那麼程序就會被停止。而這個狀況確定不是咱們想看到的,咱們但願即便終端關閉,程序依然能夠在跑。面試
這時咱們就可使用 nohup
這個命令。bash
nohup
命令是英語詞組 no hangup
的縮寫,意思是不掛斷
,也就是指程序不退出。這個命令會使程序忽略 HUP
信號,保證程序可以正常進行。HUP
信號有些人可能比較陌生,它是在終端被停止的時候向它所關聯的進程所發出的信號,進程收到這個信號後就會停止運行。因此若是你不但願進程被這個信號幹掉的話,就能夠忽略這個信號。而 nohup
命令作的就是這個事情。網絡
本文咱們將詳細介紹 nohup
命令的具體用法。架構
nohup 命令的基本語法以下:學習
$ nohup command arguments複製代碼
或者:網站
$ nohup options複製代碼
若是你想要獲得更多關於 nohup 的用法介紹,能夠查看它的幫助頁面:spa
$ nohup --help複製代碼
若是你須要查看它的版本號,可使用 --version
選項。3d
$ nohup --version複製代碼
若是你須要運行一個程序,即便對應的 Shell 被退出後依然保持運行,能夠這樣使用 nohup 運行這個程序:日誌
$ nohup command複製代碼
當這個程序進行起來以後,這個程序對應的 log 輸出及其錯誤日誌都將被記錄在 nohup.out
文件裏,這個文件通常位於家目錄或者當前目錄。
若是我不想把程序的輸出保存在家目錄或者當前目錄,我想保存在我指定的路徑,而且自定義文件名,要怎麼操做?這時咱們就可使用重定向操做 >
。
好比,我如今有個腳本 myScript.sh
我想把它的輸出保存在家目錄下的 output
目錄下,文件名爲 myOutput.txt
,能夠這樣運行:
$ nohup ./myScript.sh > ~/output/myOutput.txt複製代碼
若是想讓程序在後臺運行,能夠加上 &
符號。但這樣運行以後,程序就無影無蹤了。想要讓程序從新回到終端,可使用 fg
命令。
這個命令的輸出 log 將保存在 nohup.out 文件裏,你可使用 cat 或其它命令查看。第二行裏 8699 這個數字表明這個命令對應的進程號,也就是 pid 。咱們可使用 ps
命令來找到這個進程。
若是你須要同時跑多個程序,不必一個個運行,直接使用 &&
符號便可。好比,你想同時跑 mkdir ,ping,ls 三個命令,能夠這樣運行:
$ nohup bash -c 'mkdir files &&
ping -c 1 baidu.com && ls'> output.txt複製代碼
上面有提到,nohup
命令結合 &
符號可使進程在後臺運行,即便關閉了終端依然不受影響。這時,若是想要終止這個進程,要怎麼操做呢?
最簡單的當屬 kill
命令,相信你們用過不少次了。
$ kill -9 PID複製代碼
那要如何找到進程對應的 pid 呢?咱們可使用 ps
命令。
$ ps aux | grep myScript.sh複製代碼
或者你使用 pgrep
命令也行。
接下來,再使用 kill
命令就能夠終止該進程了。
$ kill -9 14942複製代碼
最後,最近不少小夥伴找我要Linux學習路線圖,因而我根據本身的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。不管你是面試仍是自我提高,相信都會對你有幫助!目錄以下:
免費送給你們,只求你們金指給我點個贊!
也但願有小夥伴能加入我,把這份電子書作得更完美!
推薦閱讀: