screen
screen 是一個非常強大的終端多工工具,允許你在一個單一終端會話中運行多個進程,並且能夠在不同的會話之間切換或恢復會話。以下是 screen 的一些基礎用法,包括新建會話、進入會話、列出會話和刪除會話等。
1. 新建會話
創建一個新的 screen 會話並進入它:
1 | screen |
這將創建一個默認的會話,並打開一個新窗口,你可以在其中運行命令。
創建帶名稱的會話
你可以給會話指定一個名稱,方便後續管理:
1 | screen -S my_session |
這會創建一個名為 my_session 的 screen 會話。
2. 進入已存在的會話
如果你有一個正在運行的會話,並且想重新進入,可以使用以下命令:
1 | screen -r |
這將恢復你最近分離的會話。
恢復指定名稱的會話
如果你有多個 screen 會話在運行,可以通過會話名稱來恢復指定會話:
1 | screen -r my_session |
如果有多個會話,screen -r 會要求你選擇特定會話。
3. 分離會話
你可以從當前的 screen 會話中退出,而不會關閉會話,這叫做分離會話。使用快捷鍵:
1 | Ctrl-a d |
這將把你從當前的 screen 會話中分離,會話仍在後台運行。
4. 列出所有會話
你可以查看當前正在運行的所有 screen 會話:
1 | screen -ls |
這會列出所有活動的 screen 會話及其編號。例如:
1 | There are screens on: |
5. 刪除會話
要刪除(終止)一個 screen 會話,你有幾種方式:
退出當前會話
如果你處於一個 screen 會話中,並希望結束它,可以簡單地輸入 exit 命令來終止該會話:
1 | exit |
這會關閉該會話的所有窗口並終止會話。
刪除指定會話
你可以從外部終止指定的 screen 會話:
1 | screen -S my_session -X quit |
這將終止名為 my_session 的 screen 會話。
終止所有會話
如果你想終止所有 screen 會話,可以使用以下命令:
1 | killall screen |
這會殺死所有運行中的 screen 會話。
6. 在會話內操作
screen 有許多內部命令,可以幫助你在一個會話中進行操作:
新建窗口:在當前會話中創建一個新窗口(類似於
tmux的窗口),快捷鍵:1
Ctrl-a c
切換窗口:在不同窗口間切換,快捷鍵:
1
2Ctrl-a n # 切換到下一個窗口
Ctrl-a p # 切換到上一個窗口關閉窗口:在當前窗口內,執行
exit,這會關閉當前窗口:1
exit
7. 自動恢復屏幕尺寸
有時,當你從不同大小的終端恢復 screen 會話時,屏幕尺寸不會自動調整。你可以通過以下快捷鍵來手動調整屏幕尺寸:
1 | Ctrl-a :resize |
這將使 screen 自動適應當前終端的尺寸。
8. 進入已經附加的會話
你在使用 screen 命令时遇到了一个问题。错误信息显示存在一个名为 27537.test 的会话,但该会话已附加在另一个终端上,因此无法重新连接。
查看当前运行的 screen 会话:
1
screen -ls
强制分离已附加的会话:
如果你想强制分离这个会话,可以使用:1
screen -d 27537.test
这会将会话从当前终端中分离出来。
重新连接会话:
然后,你可以再次尝试连接:1
screen -r 27537.test
小結
screen 非常靈活,可以用來保持長時間運行的進程不中斷,例如長時間運行的腳本或伺服器應用程序。同時,它的分離和恢復功能使你可以在不同終端之間輕鬆切換。如果你熟悉 tmux,你會發現它們有很多相似的功能,但 screen 更加簡單且內置於大多數 Linux 發行版中。
tmux 简要用法
1. 查看會話歷史記錄
tmux 有一个内置的滚屏缓冲区,你可以通过进入复制模式(Scrollback Mode)来查看会话中的历史输出。
步骤:
- 进入复制模式:
- 使用键盘快捷键
Ctrl + b,然后按[(即Ctrl + b [),进入复制模式。
- 滚动查看历史输出:
- 使用 方向键 或 PgUp/PgDn 来上下滚动查看输出。
- 如果你的终端支持滚动手势(如鼠标滚轮),你也可以通过滚动查看历史。
- 退出复制模式:
- 按
q退出复制模式,返回正常模式。
2. 向已經創建的會話發送指令
使用 tmux send-keys 命令將指令發送到已存在的 tmux 會話中。以下是如何在一條命令中完成這個操作:
1 | tmux send-keys -t mc_spigot_server './startserver.sh' C-m |
這裡的參數解釋如下:
send-keys: 用於將鍵盤輸入發送到指定的tmux會話。-t mc_spigot_server: 指定要發送命令的會話名稱。'./startserver.sh': 要執行的命令。C-m: 模擬按下 Enter 鍵以執行該命令。
這樣就可以直接在指定的 tmux 會話中執行指定腳本了。