如何建立新的螢幕會話並執行命令,但將螢幕保留在那裡?

如何建立新的螢幕會話並執行命令,但將螢幕保留在那裡?

大家好,我正在嘗試讓我的 Minecraft 伺服器與我的伺服器一起啟動。一旦我弄清楚正確的命令是什麼,我就會使用 cron。我希望 Minecraft 在標題為「Minecraft」的新畫面中啟動,並且希望向此會話發送一條啟動伺服器的命令。每天凌晨 3 點,我想發送命令「stop」來停止 Minecraft 伺服器,然後發送命令來啟動伺服器(如果不每隔一段時間重新啟動一次,Minecraft 就會出現問題)。我正在擺弄螢幕選項,我的世界啟動了幾秒鐘,然後螢幕就殺死了它。根據我在網路上閱讀的內容,這個命令應該可以工作。

screen -dmS Minecraft java -Xmx12G -Xms12G -jar /home/alan/minecraft/forge-1.16.5-36.2.30.jar --nogui

我想重新連接到此會話以鍵入命令或重新啟動 Minecraft 伺服器,因為我進行了更改。我運行的所有命令都不起作用,我輸入“screen -ls”,但我的“Minecraft”會話不存在。我知道如何使用 cron,但我顯然不了解 screen。我們所在的地區經常停電,因此我使用 UPS 關閉我的伺服器,並在電源恢復時使用 Raspberry PI 將其重新打開。如果能將《我的世界》納入我的新創公司那就太好了。之後,我的所有服務將自動啟動和停止,無需我幹預。

答案1

既然你命名了你的螢幕Minecraft

# Tell Minecraft to gracefully stop.
# Ending Minecraft will terminate Java
# systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed
screen -p 0 -S Minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
screen -p 0 -S Minecraft -X eval 'stuff "save-all"\\015'
screen -p 0 -S Minecraft -X eval 'stuff "stop"\\015'
sleep 10

您可以輕鬆地將命令包裝到 systemd 服務中,該服務還可讓您在啟動時自動啟動、狀態監控以及使用 systemctl 輕鬆啟動/停止/重新啟動控制。

您通常不需要費心讓螢幕保持開啟狀態,因為所有輸出都會被記錄,並且所有伺服器命令都可以透過管理控制台輸入。

幾年前我寫了一篇關於整個過程的完整部落格文章:這是第一部分http://cheesehead-techblog.blogspot.com/2019/08/toggling-minecraft-server-using-systemd.html

相關內容