我的 gameServer.py 脚本通过 PuTTy 远程运行。
gameServer.py 看起来像这样:
而真: ((监听数据包)) ((将所有数据包发送到所有客户端))
当我正常执行脚本时:
./gameServer.py
它工作得很好,但终端被捆绑了。自然退出 PuTTy 会终止我的脚本。
我希望能够关闭 PuTTY 并让这个脚本永久运行,所以我尝试了:
./gameServer.py &
但这实际上不起作用,我不明白为什么。首先,在该&
模式下运行时它不会接收或发送任何数据包,其次,每当我在控制台中输入 enter 或 ANYTHING 时,它都会“+ Stopped”。
我不明白为什么它会停止,但试试
当您断开 PuTTY 时,这应该会导致 gameServer.py 忽略挂断信号
尝试使用以下命令将其置于后台:bg
您可以将您的进程更改为 daemon,然后您可以在不杀死它的情况下删除您的 tty:
并在您的脚本中简单地调用此函数
您可以查看此ActiveState 配方以了解有关双分叉机制和更精确实现的更多信息。
注销并让作业继续运行的另一种方法是使用“
disown <jobid>
”命令。它允许您从当前登录会话中取消绑定作业,以便您可以注销。这不是为了回答你的 python 问题,不知道从哪里开始,但是会调用一个临时的解决方法/有用的实用程序,
screen
yum install screen
或者apt-get install screen
如果你使用的是 Debian/Ubuntu 或 Redhat/Centos/Fedora 将安装它。Screen 为您提供了一个 shell 会话,您可以从中分离和重新连接,而无需维护连接。我几乎在我连接的任何盒子上使用它,因为如果我断开连接,我不会切断它的流程中可能具有破坏性的工作。只需运行
screen
以生成一个新会话,运行您的命令,然后按 ctrl+a,然后按 d(按住两个字母的控制键)要重新连接,从命令行运行screen -dr
,您的屏幕会话将附加到您当前的连接。