我在/etc/init.d/目录中添加了一个名为screen_tronserver.sh的脚本。我已经设置了权限,因此它是可执行的并且被称为
update-rc.d /etc/init.d/screen_tronserver.sh defaults 100
将脚本添加到启动。 文件内部如下:
#!/bin/bash
echo "creating screen and starting tron server..."
screen -S tronserver -m /home/pi/programming/tronserver/a.out
a.out文件是一个已编译的程序,它运行我创建的服务器。现在我打电话
screen -ls
它说没有找到套接字。但是,我尝试连接到服务器并且它成功,表明屏幕/套接字在某处,在后台运行。
那为什么我看不到这个神秘的插座呢?
答案 0 :(得分:4)
正如Andrew已经提到的那样,init脚本以root身份运行,而屏幕属于不同的用户。当您键入screen -ls
时,您将看到当前用户的屏幕,而不是系统上的所有屏幕。
是的,sudo screen -ls
或sudo screen -r
可以解决问题。
编辑(为了完整性和将来参考):正如OP指出的那样,还需要在屏幕命令中添加-d
标志,以便在init中立即分离脚本,否则屏幕将保持连接状态。