Python通过另一个进程发送命令,等待进程终止,然后重新启动系统?

2024-04-24 02:41:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为我和我的朋友运行一个Minecraft服务器。除了延迟(由于我的互联网,而不是硬件),服务器运行平稳,但是,我的Pi想关闭每隔一段时间(如果服务器控制台崩溃,或如果屏幕决定关闭该会话,等等…)。我想做的是创建一个python脚本,每天午夜和中午运行,通过服务器控制台和pi本身发出一些命令。你知道吗

服务器控制台是通过screen -r Minecraft访问的,因此我可以关闭SSH会话并保持服务器运行。如果服务器没有运行,可以用./minecraft.sh启动。你知道吗

下面是我想做的:(对不起,除了导航pi控制台所需的东西之外,我对python知之甚少)(我更熟悉C语言,因此如果我的代码更像python而不是python,我很抱歉) 注:进入服务器控制台屏幕的命令-r minecraft不需要在非命令文本周围加引号,即说单词将向游戏聊天发送单词,但说“单词”将向游戏聊天发送“单词”。你知道吗

//SafeShutDown.py
//This code is in no way executable. I just typed it out as an outline. A lot is wrong with it I'm assuming.

Loop A;
If dateTime.Now == 12:00 or dateTime.Now == 24:00 { 
    screen -r Minecraft
    say Server saving... //In minecraft console. Announces to players
    autosave all //In minecraft console. Plugin to save the world
    say Server is restarting in 1 minute. Please wait //In Minecraft console
    wait 60s //In python
    stop //Command to send within the process "Minecraft" to shutdown server

    wait for process "Screen -r Minecraft" to terminate //This is what I need help with
    reboot
Else { Go To A;}

// Other scripts here that starts at boot to run ./minecraft.sh and ./SafeShutDown.py from /home/Minecraft.

我试过让脚本在启动时运行,但没有用。布雷克拉夫特.sh应该在启动时运行,所以如果它崩溃了,仍然会运行(布雷克拉夫特.sh在screen-r Minecraft下启动服务器,以便稍后访问)

编辑:拼写,解释,更好的代码。 编辑:描述雷击命令,添加公告和保存状态。你知道吗


Tags: toin命令服务器脚本屏幕issh