screen命令

真的是逼上梁山,學screen命令n次了,就是記不住,爲什麼,因爲沒有足夠的需求,每次都感覺沒事,可以有別的命令能代替。終於還是坑了自己一把。公司執行一條sql,alert語句,修改表結構!幾百萬條數據,遠程執行,不知道數據量,差點以爲進程假死。又怕遠程斷線,無奈,下次要長記性。

安裝screen

檢查系統時候帶有次命令

[root@localhost ~]# screen -v
Screen version 4.01.00devel (GNU) 2-May-06

centos

yum install screen -y

debian

apt-get -y install screen

啓動一個 screen 會話

可以在命令行中輸入 screen 來啓動它,接着會有一個看上去和命令行提示符一樣的 screen 會話啓動。

screen  # 自動開啓的命令

使用描述性名稱啓動屏幕會話是一個很好的做法,這樣你可以輕鬆地記住會話中正在運行的進程。要使用會話名稱創建新會話,請運行以下命令:

screen -S name  # name爲自定義的名字

將 “name” 替換爲對你會話有意義的名字。

從 screen 會話中分離

要從當前的 screen 會話中分離,你可以按下 Ctrl-A 和 d。所有的 screen 會話仍將是活躍的,你之後可以隨時重新連接。

PS: 還要一種笨方法,直接斷開ssh連接,再重新連就會看見這個任務了!😛

重新連接到 screen 會話

如果你從一個會話分離,或者由於某些原因你的連接被中斷了,你可以使用下面的命令重新連接:

[root@localhost ~]# screen -r
There are several suitable screens on:
        117379.mysql    (Detached)
        117312.pts-0.localhost  (Detached)
        117256.pts-0.localhost  (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

需要指定pid來進入會話

如果你有多個 screen 會話,你可以用 ls 參數列出它們。

[root@localhost ~]# screen -ls
There are screens on:
        117379.mysql    (Detached)
        117312.pts-0.localhost  (Detached)
        117256.pts-0.localhost  (Attached)
3 Sockets in /var/run/screen/S-root.

重新連接

  1. 指定pid
[root@localhost ~]# screen -r 117312
  1. 指定別名
[root@localhost ~]# screen -r mysql
  1. 快捷方式(當只有一個後臺時)
[root@localhost ~]# screen -x
  1. 問題

當有時不確定,在一個screen裏再screen,就會出現多個Attached,再次連接其中一個screen時報錯
重新attach失敗:There is no screen to be resumed matching
這時可以使用

[root@localhost ~]# screen -d 117312  # 這裏的117312是無法進入的screen 的pid

然後就可以再次進入,使用screen -r 117312重新進入

當不清楚所在環境時,將所有會話都變爲Detached模式(screen -d pid),可以有利於分清所在環境

判斷當前窗口

(Detached)表示此窗口在後臺運行
(Attached)表示你當前在此窗口,當你不確定你是在screen裏時,可以這麼判斷

在我們的例子中,我們有三個活躍的 screen 會話。因此,如果你想要還原 “session2” 會話,你可以執行:

screen -r 115276

也可以指定名字

screen -r -S mysql  # 可以不用-S參數
screen -r mysql  # 親測有效

當只有一個screen會話窗口在後臺時,可以用快捷命令:

screen -x

中止 screen 會話

有幾種方法來中止 screen 會話。你可以按下 Ctrl+d,或者在命令行中使用 exit 命令。

PS:ctrl + d 這個可以在很多命令行使用,退出mysql,退出當前用戶,退出python環境#不用使用exit()#

要查看 screen 命令所有有用的功能,你可以查看 screen 的 man 手冊。

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