
我想在新的螢幕會話中執行命令(並從中分離),但我無法讓它工作。我嘗試在新的螢幕會話中啟動一個進程,並透過以下方式與其分離:
screen -d -m mycommmand
但是當我嘗試附加到該螢幕會話時
screen -r
我收到訊息“沒有可以恢復的螢幕”。我還嘗試在新的螢幕會話中啟動命令
screen mycommand
當我這樣做時,一個新的螢幕會話將啟動,但該命令不會被執行。
該命令是一個 .sh 腳本,用於啟動遊戲伺服器,但遊戲伺服器未啟動。
[編輯] 因為有些人要求確切的命令,所以它是:這是一個 bash 腳本,應該在單獨的螢幕會話中啟動 Minecraft 伺服器。
./startServer.sh
這是 .sh 腳本:
cd "/home/tim/minecraft/survivalServer"
screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui
現在的問題是,當我運行腳本時,它無法建立新的螢幕會話。這是為什麼?
非常感謝您的幫忙。謝謝
答案1
問題是您正在嘗試在分離的螢幕實例內啟動嵌套的分離的螢幕實例。您的腳本包含以下行:
screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui
這將啟動螢幕,命名螢幕會話minecraft-server-1-14-4
,然後啟動我的世界並分離。但你也在試圖逃跑screen -d -m ./startserver.sh
。因此,在腳本中建立螢幕會話之前,您已經在分離的螢幕會話中執行腳本。這……效果不太好。
它的功能與此相同:
wolferz@khaos ~ $ screen -m -d screen -S 'mysession' -m -d top
wolferz@khaos ~ $ screen -r
There is a screen on:
24850.mysession (07/24/2019 10:47:46 PM) (Dead ???)
Remove dead screens with 'screen -wipe'.
There is no screen to be resumed.
您要做的就是直接運行腳本。做就是了./startserver.sh
。這應該會讓你在提示時回來。然後,您可以像平常一樣連接到您的 Minecraft 控制台screen -r
。