使用php终止GNU屏幕会话


Killing GNU screen session using php

我在我的VPS上为我的伴侣托管一个游戏服务器,我试图为他制作一个网页,如果他愿意,可以停止服务器。

我使用的是:

system('/bin/sh stopserver.sh');

这就是stopserver.sh:

/usr/bin/screen -S server -X kill

但这给我的信息是:必须连接到终端。

有什么建议吗?

我认为这可能是您使用的屏幕版本中的一个错误,因为我拥有的4.00.03jw4 (FAU) 2-May-06没有显示出来。如果可能的话,我建议升级。

如果你不能升级屏幕,你需要想办法为它提供一个终端。不幸的是,我不知道该怎么做。在某些版本的PHP中,proc_open()似乎能够做到这一点,至少如果PHP是用正确的选项编译的,但显然该功能已经被删除。

如果expect安装在您的系统上,那么使用它可能是一个很长的机会。

编辑:或者按照tMC的建议,使用posix_kill($pid, SIGTERM)。不过,您需要首先找到会话的进程ID。(你可能会为它输出ps。如果你不担心附带损害,也可以使用killall。(