screen——讓任務在linux後臺運行

常常需要在linux遠程服務器上運行一些任務,這些任務並不是短時間內就可以完成的,一旦關閉終端(terminal)窗口或者斷開鏈接,任務就會被殺死;或者我們想要同時運行多個任務,但又不想開多個終端窗口,怎麼辦?

這時候screen就派上用場了,它能實現任務和當前窗口的分離,即使你關掉了當前窗口,只要服務器還在運行,任務就依舊在後臺運行;藉助screen還能在當前窗口同時開始多個任務。

一般的linux系統都會自帶screen,如果沒有安裝的話,使用如下命令進行安裝

sudo apt-get install screen

或sudo yum install screen

我主要是爲了讓tensorboard服務、jupyter服務等長期在遠程服務器上後臺運行,才使用screen的。這涉及到一些基礎的screen操作,如下所述,親測可行。

1 查看有哪些會話窗口正在運行

# 在命令行輸入如下命令
screen -ls

# 終端返回結果示例
There is a screen on:
        28114.tensorboard       (12/18/19 05:53:27)     (Detached)
1 Socket in /var/run/screen/S-root.

這說明有一個會話窗口在後臺運行,該會話的編號是28114(用戶新建窗口後系統給的),名稱是tensorboard(用戶新建窗口時指定的)       

2 新建窗口,並進入到這個窗口。(就相當於新開了一個terminal窗口,然後就可以執行任何你想要的命令行操作了)

# 在命令行輸入如下命令(其中gbl_jupyter在我自己起的名字)
screen -S gbl_jupyter

3 退出會話窗口,但希望任務繼續運行,請使用快捷鍵 ctrl-a-d

   這其實就是執行了分離命令detach,在保證裏面的程序正常運行的情況下讓Screen掛起(切換到後臺)

4 重新恢復/進入一個窗口

screen -r 28114 # 28114是你想進入的會話窗口的編號

5 將窗口從atached狀態轉換爲detached狀態

screen -d 28114

6 關掉/殺死 某個窗口

screen -S 28114 -X quit

7 清除所有dead掉的窗口

窗口後面有(???dead)字樣,說明窗口死了,但是仍在佔用空間

screen -wipe

除了上述操作,screen還有一些好玩的功能,比如會話共享,也就是說你可以和其他人同時從不同的終端進行到同一個會話,這時候你們看到的界面是完全一樣的,你可以看到他正在以多快的速度敲代碼,他也可以看到你輸入的命令行操作,親測可行,嘻嘻嘻,很好玩的=-=

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章