昨天朋友問如果使用 PieTTY 遠端連線進主機,下了一個指令之後,這時候把 PieTTY 關掉,指令會不會繼續執行,還是關掉就斷掉了?小蛙之前也有類似的問題,問了精通 Linux 的同事後,同事給了一個 screen 的方法,小蛙記錄一下基本 screen 用法以及 Google 查到的其他用法。

使用 screen 讓指令繼續執行
screen
# 下你要的指令
ctrl + a, d

這樣就可以斷線了,指令會繼續在背景執行。

常用指令如下,更詳細資訊可參考 screen 教學 @ Tsung’s Blog

# 進入 screen 環境
screen
 
# ctrl + a 即是進入命令模式
# 進入命令模式之後,後面接一個指令

# 開啟一個新視窗並切換到此視窗
ctrl + a, c
 
# 切換到下一個視窗
ctrl + a, n
 
# 切換到上一個使用的視窗,有點類似 cd - 切換到上一個工作目錄
ctrl + a, ctrl + a
 
# 顯示所有目前視窗,顯示結果如下 0$ bash  1-$ bash  2*$ bash
# * 表示目前使用視窗
ctrl + a, w
 
# 接續上述指令,可切換到該視窗
ctrl + a, 數字
 
# 另一個切換視窗的方法
ctrl + ', 數字
 
# 關閉目前視窗
ctrl + a, k
 
# 斷開 screen 並放背景執行
ctrl + a, d
 
# 查看目前 screen 
screen -ls
26130.pts-0.xxxxx       (2018年06月09日 19時32分11秒)   (Detached)
25831.pts-0.xxxxx       (2018年06月09日 19時15分57秒)   (Detached)
 
# 接回 screen
screen -r 26130
使用 nohup 指令

當從一個連線斷開的時候,系統會收到 SIGHUP 信號,如果使用 nohup 執行指令,則不會受到 SIGHUP 的影響繼續執行。

# 以 nohup 執行並且加入「&」丟到背景執行,執行的結果會存在 nohup.out 
nohup xxxxxxxx &
參考資料
  1. screen 教學 @ Tsung’s Blog
  2. [linux[tips]nohup: 讓command在遠端執行,不因登出而中斷 @ 真實旅程 :: 痞客邦 ::

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *