screen是一款由GNU計劃開發的用於命令行終端切換的自由軟件。用戶能夠經過該軟件同時鏈接多個本地或遠程的命令行會話,並在其間自由切換。GNU Screen能夠看做是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。php
screen的重要性,主要是體如今它能夠方便的在服務器上一直運行,只要服務器沒有宕機,沒有斷電它就能夠作到不用中止。其實後端工程師常常會遇到,要經過執行腳本處理一些數據,但這個腳本可能須要執行半天或者幾天,screen就是最佳選擇了,過一段時間登陸到服務器上查看下運行狀態,是否運行完成。沒有完成掛起來繼續運行。後端
參數 | 說明 |
---|---|
ls | 列出當前全部的回話 |
S | 大寫的S,新建一個名稱是xxx的會話 |
r | 經過序號鏈接進程會話 |
d | detach斷開某個會話 |
D | 與-d命令相同,可是會logout原來在screen裏的用戶 |
參數 | 說明 |
---|---|
ctrl+a d | detach會話,將目前的 screen session 丟到後臺執行,並會回到還沒進 screen 時的狀態,screen 都在繼續執行,即便 logout 也不影響後臺的執行 |
ctrl+a k | 強行關閉當前的窗口 |
ctrl+a z | 把當前的會話放到後臺執行,用fg命令能夠調回來 |
先模擬一個須要執行很長時間的腳本代碼服務器
test.php <?php sleep(10000); echo 111; ?>
程序休眠10000秒以後輸出 1111
先建立一個screen,而後執行它以後,退出登陸狀態session
screen -S test php test.php
建立名爲test的screen,進入screen以後執行test.php。而後讓腳本在 screen裏面一直執行,按 Ctrl+a d讓腳本在screen後臺執行。ssh
screen -S test [detached from 3934.test]
exit 退出登陸,等一段時間而後再登陸上去,查看下腳本是否還在執行命令行
ssh screen -ls There are screens on: 3934.test (02/25/2020 10:27:06 PM) (Detached)
名爲test的screen ID 爲3934,鏈接該screen並進入code
screen -r 3934 php test.php
能夠看到 test.php的腳本還在執行。進程
執行ctrl+a z,然腳本在後臺執行,而後再使用fg調到前臺開發
[1]+ Stopped screen -r 3934 執行fg php test.php
再看下screen -d 和 -D
從新打開一個窗口,ssh以後,執行rem
screen -d 3934 [3934.test detached.] 而後查看前一個窗口,看看是否斷開了screen screen -r 3934 [remote detached from 3934.test]
再看下,-D,在第一個窗口
screen -r 3934 第二個窗口執行-D screen -D 3934 [3934.test power detached.] 再看第一個窗口已經被強制退出登陸了。 screen -r 3934 [remote power detached from 3934.test] Connection to 127.0.0.1 closed.
screen -ls screen -S screen -R ctrl+a d