
我正在嘗試創建一個分離的螢幕,然後向其發送命令,但這似乎不起作用。
如果我輸入以下命令:
$ screen -ls
No Sockets found in /var/run/screen/S-ec2-user.
$ screen -dmS myscreen
$ screen -ls
There is a screen on:
9175.myscreen (Detached)
1 Socket in /var/run/screen/S-ec2-user.
$ screen -S myscreen -X ls
然後我附加到螢幕上查看命令是否執行:
$ screen -r myscreen
我得到的只是一個空白的命令列,就好像什麼事都沒發生一樣。
有誰知道為什麼會失敗,以及我可以使用哪些命令來實際讓命令在螢幕內運行?
注意:如果可能的話,我想與螢幕保持分離,只從外部向螢幕發送命令。這是因為我的計劃是使用自動化方式(例如 bash 腳本)運行多個螢幕。
答案1
終於讓這個工作了。
看著screen
一些使用的程式碼範例,似乎 -X 參數需要stuff
在實際命令之前包含單字:,並且命令必須用雙引號(“xyz”)括起來。
此外,為了使命令運行,Enter擊鍵必須與其一起發送。將關閉這篇關於插入特殊字元的文章Ctrl,我設法通過按+ V,輸入按鍵Enter。
命令列如下圖所示:
$ screen -S myscreen -X stuff 'ls^M'