前言
對於執行長時間命令(如大檔案運輸)而言,為了不讓它終止,都會開啟一個遠程登陸會話視窗來單獨運行這樣的命令。在此期間,不能關閉遠程登入工作階段視窗或者中斷連線,否則前功盡棄。這時候screen命令就派上用場了。
Screen是一款由GNU計劃開發的用於命令列終端切換的自由軟體。使用者可以通過該軟體同時串連多個本地或遠端命令列會話,並在其間自由切換。GNU Screen可以看作是視窗管理器的命令列介面版本。它提供了統一的管理多個會話的介面和相應的功能。
下面來介紹下我最常用的screen命令(僅限於我):
首先建立screen會話視窗,可以在這個視窗中執行任何命令,如同在遠程登入工作階段視窗下一樣。
接下來我想登陸我的MySQL進行人機互動,當然是在screen會話視窗中。
[root@wing ~]# mysql -uroot -p --socket=/data/mysqldata3306/sock/mysql.sock
然後在我的MySQL中執行如下命令,customer表中有150萬條資料,執行起來需要一點時間(對於我這種爛虛擬機器來說而已),所以我現在又不想複製一個遠程登陸會話視窗(太懶),所以我要將當前的這個screen會話拋到後台運行。
root@localhost : tcph 12:37:39> SELECT * FROM customer;
下面這個命令就是將screen會話拋到後台了,當然MySQL裡面的任務還在運行。
Ctrl+A D(按下ctrl+A ,鬆開再按下D)
然而現在我又想去看看我的語句跑完沒(我是個麻煩的人),執行命令如下:
此時就可以查看剛剛丟到背景任務了,見下圖:
既然找到了任務,也看到了任務在screen裡面的代號(紅框前部分的數字)了,那趕緊運行吧。
[root@wing ~]# screen -r 6158
這時候我們就能看到了前面在MySQL中的互動,此時發現我任務跑完了。如果我還是按Ctrl+A D的話,它還是會存在於screen -ls的任務清單中,作為強迫症的我,怎麼能忍受=_=,那麼怎麼辦呢?
這樣子就可以殺掉這個任務了,並且在screen -ls的任務清單中也就不存在了。
總結
好了,以上就是這篇文章的全部內容了,想瞭解更深入的命令請大家繼續關注云棲社區,小編會會陸續更新更多更詳細關於Linux命令的文章。