系統城裝機大師 - 唯一官網:www.jasafloorhardener.com!

    當前位置:首頁 > 系統教程 > Linux教程 > 詳細頁面

    Linux nohup命令詳解,終端關閉程序依然可以在執行!

    時間:2020-06-21來源:www.jasafloorhardener.com作者:電腦系統城

    在工作中,我們很經常跑一個很重要的程序,有時候這個程序需要跑好幾個小時,甚至需要幾天,這個時候如果我們退出終端,或者網絡不好連接中斷,那么程序就會被中止。而這個情況肯定不是我們想看到的,我們希望即使終端關閉,程序依然可以在跑。

    這時我們就可以使用 nohup 這個命令。

    nohup 命令是英語詞組 no hangup 的縮寫,意思是不掛斷,也就是指程序不退出。這個命令會使程序忽略 HUP 信號,保證程序能夠正常進行。HUP 信號有些人可能比較陌生,它是在終端被中止的時候向它所關聯的進程所發出的信號,進程收到這個信號后就會中止運行。所以如果你不希望進程被這個信號干掉的話,就可以忽略這個信號。而 nohup 命令做的就是這個事情。

    本文我們將詳細介紹 nohup 命令的具體用法。

    nohup命令基本語法

    nohup 命令的基本語法如下:

    
     
    1. $ nohup command arguments 

    或者:

    
     
    1. $ nohup options 

    如果你想要得到更多關于 nohup 的用法介紹,可以查看它的幫助頁面:

    
     
    1. $ nohup --help 

    如果你需要查看它的版本號,可以使用 --version 選項。

    
     
    1. $ nohup --version 

    使用nohup命令啟動一個程序

    如果你需要運行一個程序,即使對應的 Shell 被退出后依然保持運行,可以這樣使用 nohup 運行這個程序:

    
     
    1. $ nohup command 

    當這個程序進行起來之后,這個程序對應的 log 輸出及其錯誤日志都將被記錄在 nohup.out 文件里,這個文件一般位于家目錄或者當前目錄。

    重定向程序的輸出

    如果我不想把程序的輸出保存在家目錄或者當前目錄,我想保存在我指定的路徑,并且自定義文件名,要怎么操作?這時我們就可以使用重定向操作 > 。

    比如,我現在有個腳本 myScript.sh 我想把它的輸出保存在家目錄下的 output 目錄下,文件名為 myOutput.txt ,可以這樣運行:

    
     
    1. $ nohup ./myScript.sh > ~/output/myOutput.txt 

    使用nohup命令后臺啟動一個程序

    如果想讓程序在后臺運行,可以加上 & 符號。但這樣運行之后,程序就無影無蹤了。想要讓程序重新回到終端,可以使用 fg 命令。

    這個命令的輸出 log 將保存在 nohup.out 文件里,你可以使用 cat 或其它命令查看。第二行里 8699 這個數字代表這個命令對應的進程號,也就是 pid 。我們可以使用 ps 命令來找到這個進程。

    使用nohup同時運行多個程序

    如果你需要同時跑多個程序,沒必要一個個運行,直接使用 && 符號即可。比如,你想同時跑 mkdir ,ping,ls 三個命令,可以這樣運行:

    
     
    1. $ nohup bash -c 'mkdir files && 
    2. ping -c 1 baidu.com && ls'> output.txt 

    終止跑在后臺的進程

    上面有提到,nohup 命令結合 & 符號可以使進程在后臺運行,即使關閉了終端依然不受影響。這時,如果想要終止這個進程,要怎么操作呢?

    最簡單的當屬 kill 命令,相信大家用過很多次了。

    
     
    1. $kill -9 PID 

    那要如何找到進程對應的 pid 呢?我們可以使用 ps 命令。

    
     
    1. $ ps aux | grep myScript.sh 

    或者你使用 pgrep 命令也行。

    接下來,再使用 kill 命令就可以終止該進程了。

    
     
    1. $kill -9 14942 
    分享到:

    相關信息

    系統教程欄目

    欄目熱門教程

    人氣教程排行

    站長推薦

    熱門系統下載

    久久大香久久久尹人尹人