screen
命令是一個終端多路複用器,這意味著它允許你在一個視窗中執行多個終端會話。你是否需要管理長期執行的任務,或在登出後仍保持會話的活力?這就是 screen 發揮作用的地方。
screen
的妙處在於它能分離和重新連線會話,這對遠端工作、長時間執行的指令碼或任何需要在多個終端視窗間跳轉的任務都非常有用。常用的相關命令包括: screen -r
,用於重新連線會話; screen -ls
,用於列出活動會話;Ctrl + A,然後 D,用於在不終止會話的情況下分離會話。
因此,無論你是要處理各種任務的系統管理員,還是執行多個程序的開發人員,screen 都是你需要新增到 Linux 工具包中的命令。請繼續閱讀,瞭解如何充分發揮它的潛力。
screen
命令的一般語法:
screen [OPTIONS] [SESSION NAME]
1. 用指定名稱建立會話
screen -S [file]
-S
選項會在螢幕中建立一個新視窗,併為其命名。
示例:
user@hostname:~$ screen -S my_session
執行此命令後,你將進入名為 my_session
的新螢幕會話。在終端中無法直接看到會話名稱,但可以通過退出當前會話(按 Ctrl + A,然後按 D),然後執行 screen -ls
,列出所有活動會話。
分離後 screen -ls
的輸出示例:
user@hostname:~$ screen -ls There is a screen on: 12345.my_session (Detached) 1 Socket in /var/run/screen/S-user.
在這個例子中,12345
是螢幕會話的程序 ID,my_session
是你給會話起的名字。
要重新連線到這個會話,可以使用
screen -r 12345
或者,如果您為您的會議命名:
screen -r my_session
這將使您回到退出的螢幕會話。
2. 列出所有螢幕程序
screen -ls
該選項可顯示當前開啟的所有視窗,包括後臺執行的視窗。
示例:
輸出結果通常是這樣的:
There are screens on: 12345.pts-0.hostname (Detached) 67890.pts-1.hostname (Attached) 2 Sockets in /var/run/screen/S-username.
下面是輸出結果的細目:
12345.pts-0.hostname
和67890.pts-1.hostname
是螢幕會話的識別符號。12345
和67890
是螢幕會話的程序 ID(PID)。pts-0
和pts-1
表示終端型別。hostname
是執行螢幕會話的主機名稱。- (
Detached
) 或 (Attached
) 表示螢幕會話的狀態。 Detached
表示會話在後臺執行,當前未連線到任何終端。Attached
表示會話當前正在終端視窗中檢視。2 Sockets
in/var/run/screen/S-username
表示螢幕會話的數量和儲存會話套接字的目錄。username 是擁有會話的使用者名稱。
3. 重新連線終端的會話
screen -r [filename]
使用此選項可重新連線過去已分離的螢幕會話。
示例:
比方說,你有一個長期執行的程序,比如下載一個大檔案,你想在登出後仍讓它繼續執行。你可以使用 screen 建立一個新會話,並在其中執行程序。
建立一個新的 screen 會話:
screen -S my_download_session
這將建立一個名為 my_download_session
的新螢幕會話。
執行長期執行的程序:
wget http://example.com/large-file.zip
退出螢幕會話:
按下 Ctrl + A,然後按 D 從會話中退出。會話將繼續在後臺執行。
登出或關閉終端:
此時,您可以安全地登出或關閉終端。下載將在後臺繼續進行。
重新連線到螢幕會話:
稍後,當你想檢查進度或重新加入會話時,可以使用 screen -r
命令。
screen -r my_download_session
這將使你重新連線到名為 my_download_session
的螢幕會話,然後你就可以看到下載或任何其他長期執行程序的進度。
如果你有多個分離的會話,但不確定會話的名稱,可以用以下方法列出它們:
screen -ls
這將顯示所有已分離和已連線的螢幕會話列表,你可以選擇要重新連線的會話。
4. 退出會話
screen -d [file]
-d
選項用於退出螢幕會話,以便稍後重新連線。
示例:
下面是一個分步示例,演示如何使用 screen -d [filename]
:
Step 1:建立帶名稱的新螢幕會話
首先,建立一個新的螢幕會話併為其命名,例如 ” my_session
“:
screen -S my_session
Step 2:在螢幕會話中執行一些命令
建立會話後,您將進入會話。你可以執行一些命令,比如:
ls echo "Hello, World!"
Step 3:手動退出螢幕會話
你可以按下 Ctrl + A,然後按下 D,手動退出螢幕會話。這將使你回到原來的終端,但 ” my_session
” 會話仍在後臺執行。
Step 4:重新連線到螢幕會話
你可以使用以下方法重新連線到會話:
screen -r my_session
Step 5:使用 -d
退出螢幕會話
現在,假設你在另一個終端中,想退出會話 ” my_session
” 而不重新連線到它。你可以像這樣使用 -d
選項:
screen -d my_session
如果會話 ” my_session
” 當前連線到任何終端,這將使其退出,但不會終止。之後可以使用 screen -r my_session
重新連線。
5. 共享螢幕會話
screen -X [sharing_session]
此選項允許兩個人從不同地點登入同一賬戶。
示例:
下面是一個簡單的示例,演示如何使用 screen -X
向正在執行的 screen 會話傳送命令:
Step 1:建立新的螢幕會話
首先,開啟終端,建立名為 ” my_session
” 的新螢幕會話:
screen -S my_session
Step 2:退出螢幕會話
按 Ctrl + A,然後按 D,即可從螢幕會話中退出。
Step 3:從另一個終端向螢幕會話傳送命令
開啟另一個終端視窗,使用 screen -X
命令向 ” my_session
” 螢幕傳送命令。例如,傳送 quit 命令來終止會話:
screen -S my_session -X quit
This will terminate the "my_session" screen session.
更多 Linux 命令
下面羅列了最常見的一些 Linux 命令,您可以根據自己的需要查閱對應命令的詳細解析:
目錄操作 | rmdir · cd · pwd · exa · ls |
檔案操作 | cat · cp · dd · less · touch · ln · rename · more · head |
檔案系統操作 | chown · mkfs · locate |
網路 | ping · curl · wget · iptables · mtr |
搜尋和文字處理 | find · grep · sed · whatis · ripgrep · fd · tldr |
系統資訊和管理 | env · history · top · who · htop · glances · lsof |
使用者和會話管理 | screen · su · sudo · open |
此外,我們還整理 Linux 命令列大全,以幫助大家全面深入地學習 Linux。
評論留言