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