顯示具有 screen 標籤的文章。 顯示所有文章
顯示具有 screen 標籤的文章。 顯示所有文章

2020年7月21日 星期二

解決WSL2沒辦法使用screen的問題

用WSL2裝的Ubuntu 20.04上,screen這個程式已預先安裝但執行時出現:
  • Cannot make directory '/run/screen': Permission denied

解決方案為指定SCREENDIR這個環境參數,方法如下:
  • mkdir $HOME/.screen && chmod 700 $HOME/.screen
  • export SCREENDIR=$HOME/.screen

2018年3月12日 星期一

卸載screen產生的終端機後再連線

GNU Screen是一套生成多個命令列終端機的程式。使用上參考《用screen操控終端機》,若發生不正常斷線,有時候screen並不會正常的卸載(detach),這時候需要用下面指令來卸載任務程序(session),然後再連線
  • screen -d 
  • screen -d -r 
  • screen -D -RR
  • screen -D
注意上面指令是用在機器上只有一隻screen在跑,如果有多隻任務程序在跑,那麼就要加上[pid.tty.host]來指定是要停止哪一隻。上述三個指令意思分別是:

2017年4月7日 星期五

快速刪除screen所有的視窗

當用screen開啟了許多個虛擬終端機後,想要一次通通刪掉:
  1. 如果在screen裡面,先卸離(detach) screen
  2. screen -ls 指令看要刪掉的虛擬終端機是哪個,名稱前面會是pid (process ID)
  3. kill pid 指令殺掉那個screen的process ID
    這時候用 screen -ls 看會發現原來那個screen的狀態是 dead
  4. screen -wipe 刪除狀態已經是dead的虛擬終端機
上述指令不清楚的部份參考用screen操控終端機

_EOF_

2016年8月10日 星期三

在screen的終端機內捲動畫面

使用 screen 的時候,想要像一般終端機一樣捲動回去看之前的指令,這時候必須要進入複製模式(copy mode)才行。參考《用screen操控終端機》用 screen -e^Ta 來開啟新的任務程序,在 screen 裡面輸入:
  • Ctrl-t + Esc
  • Esc q
第一步的意思是進入複製模式,在這個模式下可以捲動畫面,要捲動幾行則是看開啟screen的時候的buffter設定是多少(預設是1000行,可以用 -h 2000 設定成兩千行)。要跳出的話就是再按一次Esc。

2016年8月3日 星期三

對所有screen終端機送出一樣的指令

使用screen的時候,有時候想要對每個終端機都下相同的指令,可以這樣做。以下先執行《用screen操控終端機》提到的 screen -e^Ta 來開啟新的任務程序後,開啟多個終端機:
  • Ctrl-t + :at "#" stuff "top^M" + Enter
  • Ctrl-t + :at "#" stuff "q" + Enter
上述指令的執行順序是 Ctrl-t 後,輸入冒號後面再加入at ...,最後按Enter鍵。top^M的意思是在終端機內輸入top後再按Enter,有顏色的指令部分則會顯示在終端機上。上面第一行就是叫所有終端機都執行top,第二行則是送出q,結束top這個指令。以上參考《in Screen, how do I send a command to all virtual terminal windows within a single screen session?》Corey Henderson的回應

_EOF_

2016年7月29日 星期五

修改screen任務程序的名稱

參考《用screen操控終端機》用 screen -e^Ta 來開啟新的任務程序(session)。假設上面有三個sessions,用 screen -ls 看到分別叫做:
There are screens on:
    5422.pts-0.srv (Detached)
    5448.pts-1.srv (Detached)
2 Sockets in /var/run/screen/S-sb.

最前面顯示的數字代表process ID,中間粗體則是任務程序的名稱(session name),最後則是在跑 screen 這支程式的伺服器名稱。想要把第一個 screen 從 pts-0 改名叫做 runProgram,在上述detached模式下只要輸入:
  • screen -S pts-0 -X sessionname runProgram

若是已經在attached的模式下,也就是說已經在 screen 裡面,那就用下面的方法改名:
  • screen -r pts-1
  • Ctrl-t + : sessionname monitor
第一行指令是從detached模式變成attached模式,進入名叫pts-1的任務程序裡面
第二行輸入順序是同時按住Ctrl與t後放開,按冒號後鍵入sessionname monitor。意思是把 pts-1 這個任務程序改名叫做 monitor

如果一開始就要一個叫做 window 的screen任務程序,直接用 screen -e^Ta -S window 
以上作法參考《Set screen names with GNU screen [closed]》《Rename screen session》這兩篇文章

_EOF_

2016年1月27日 星期三

用screen操控終端機

使用終端機連線到server工作的時候,常常會需要同時開啟多個視窗來工作,最簡單的方法就是開很多個視窗,不過如果同時連到很多台servers工作時,就會開了一堆視窗,然後有很多時間都浪費在找到工作時的那個視窗。screen是這個問題的一種解法

screen可以只開一個視窗,運用一些組合鍵在不同的視窗間切換

通常我會用一台終端機連一台server,用screen產生許多視窗,之後在內部切換