當你需要確保長時間執行的任務不會在 SSH 對談中斷時被殺死時,Linux screen 命令可以成為救生員。以下是使用方法。
如果因 SSH 對談斷開而不得不重新啟動一個耗時的進程,那麼你可能會很高興了解一個有趣的工具,可以用來避免此問題:screen
工具。
screen
是一個終端多路複用器,它使你可以在單個 SSH 對談中執行多個終端對談,並隨時從它們之中脫離或重新接駁。做到這一點的過程非常簡單,僅涉及少數命令。
要啟動 screen
對談,只需在 SSH 對談中鍵入 screen
。 然後,你可以開始啟動需要長時間執行的進程,並在適當的時候鍵入 Ctrl + A Ctrl + D
從對談中脫離,然後鍵入 screen -r
重新接駁。
如果你要執行多個 screen
對談,更好的選擇是為每個對談指定一個有意義的名稱,以幫助你記住正在處理的任務。使用這種方法,你可以在啟動每個對談時使用如下命令命名:
$ screen -S slow-build
一旦執行了多個對談,要重新接駁到一個對談,需要從列表中選擇它。在以下命令中,我們列出了當前正在執行的對談,然後再重新接駁其中一個。請注意,一開始這兩個對談都被標記為已脫離。
$ screen -lsThere are screens on: 6617.check-backups (09/26/2019 04:35:30 PM) (Detached) 1946.slow-build (09/26/2019 02:51:50 PM) (Detached)2 Sockets in /run/screen/S-shs
然後,重新接駁到該對談要求你提供分配給對談的名稱。例如:
$ screen -r slow-build
在脫離的對談中,保持執行狀態的進程會繼續進行處理,而你可以執行其他工作。如果你使用這些 screen
對談之一來查詢 screen
對談情況,可以看到當前重新接駁的對談再次顯示為 Attached
。
$ screen -lsThere are screens on: 6617.check-backups (09/26/2019 04:35:30 PM) (Attached) 1946.slow-build (09/26/2019 02:51:50 PM) (Detached)2 Sockets in /run/screen/S-shs.
你可以使用 -version
選項查詢正在執行的 screen
版本。
$ screen -versionScreen version 4.06.02 (GNU) 23-Oct-17
如果 which screen
未在螢幕上提供資訊,則可能你的系統上未安裝該工具。
$ which screen/usr/bin/screen
如果你需要安裝它,則以下命令之一可能適合你的系統:
sudo apt install screensudo yum install screen
當你需要執行耗時的進程時,如果你的 SSH 對談由於某種原因斷開連線,則可能會中斷這個耗時的進程,那麼 screen
工具就會派上用場。而且,如你所見,它非常易於使用和管理。
以下是上面使用的命令的摘要:
screen -S <process description> 開始對談Ctrl+A Ctrl+D 從對談中脫離screen -ls 列出對談screen -r <process description> 重新接駁對談
儘管還有更多關於 screen
的知識,包括可以在 screen
對談之間進行操作的其他方式,但這已經足夠幫助你開始使用這個便捷的工具了。