3.1 nohup命令
如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令. 該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程. nohup就是不掛起的意思.
我們現在開始啟動服務 python pyserver.py,並且希望在后台運行.我們就可以使用nohup,命令如下:
1. nohup ./hello &
此時默認地程序運行的輸出信息放到當前文件夾的nohup.out 文件中去,加不加&並不會影響這個命令。只是讓程序前台或者后台運行而已
然后另外一個ssh中, 我們用pidof hello來查看進程的pid信息, 顯示出進程的pid為29738
接着我們關掉那個啟動了hello的ssh, 重新用pidof hello再次查看進程信息, 發現進程仍然存在
| nohup命令 | 說明 |
|---|---|
| 用途 | 掛斷地運行命令 |
| 語法 | nohup Command [ Arg … ] [ & ] |
| 描述 | nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運行后台中的程序。要運行后台中的 nohup 命令,添加 & ( 表示“and”的符號)到命令的尾部 |
無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 文件中。如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。如果沒有文件能創建或打開以用於追加,那么 Command 參數指定的命令不可調用。如果標准錯誤是一個終端,那么把指定的命令寫給標准錯誤的所有輸出作為標准輸出重定向到相同的文件描述符.
退出狀態, 該命令返回下列出口值
| 退出值 | 描述 |
|---|---|
| 126 | 可以查找但不能調用 Command 參數指定的命令 |
| 127 | nohup 命令發生錯誤或不能查找由 Command 參數指定的命令, 否則,nohup 命令的退出狀態是 Command 參數指定命令的退出狀態 |
3.2 screen命令
如果想在關閉ssh連接后剛才啟動的程序繼續運行怎么辦, 可以使用nohup.
但是如果要求第二天來的時候. 一開ssh, 還能查看到昨天運行的程序的狀態,
然后繼續工作,這時nohup是不行了, 需要使用screen來達到這個目的.
雖然nohup很容易使用,但還是比較“簡陋”的,對於簡單的命令能夠應付過來,對於復雜的需要人機交互的任務就麻煩了
其實我們可以使用一個更為強大的實用程序screen。流行的Linux發行版通常會自帶screen實用程序,如果沒有的話,可以從GNU screen的官方網站下載
執行screen , 按任意鍵進入子界面;
我用./hello命令開始執行,如果下班了,但是想關閉ssh以后./hello繼續運行,那么按ctrl+a再按d
這樣暫停了子界面,會顯示[detached]的字樣,這時候 我回到了父界面;
用screen –ls查看目前子界面的狀態screen -ls

