什麼是screen?
GNU Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟件。用戶可以通過該軟件同時連接多個本地或遠程的命令行會話,並在其間自由切換。 GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。
爲什麼要用腳本創建screen?
爲了利用服務器的多個cpu,我們經常需要同時創建多個screen,如果screen的個數非常多,手動創建會非常麻煩。
如何用bash腳本創建screen並向其發送命令?
如果我們直接在腳本里寫 screen -S my_screen, 會導致腳本無法繼續執行。爲了使腳本執行下去,創建screen的具體代碼如下:
screen_name=$"my_screen"
screen -dmS $screen_name
現在,我們就已經創建了一個名爲 my_screen 的窗口。然後,我們需要向其發送具體的命令。我們用如下命令:
cmd=$"java Test";
screen -x -S $screen_name -p 0 -X stuff "$cmd"
screen -x -S $screen_name -p 0 -X stuff $'\n'
這樣,我們就向screen發送了一條java Test命令了。 如果要退出窗口,則再向其發送一條 exit 命令即可
注意
這種方式發送的命令不能太長,否則會導致腳本卡住。 如果需要發送一條很長的命令,或者連續發送許多條命令,最好單獨寫一個腳本,發送一個腳本命令給screen,讓screen執行新的腳本。