找不到套接字:启动时调用屏幕脚本

时间:2014-01-09 19:31:16

标签: linux bash shell sockets startup

我在/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

它说没有找到套接字。但是,我尝试连接到服务器并且它成功,表明屏幕/套接字在某处,在后台运行。

那为什么我看不到这个神秘的插座呢?

1 个答案:

答案 0 :(得分:4)

正如Andrew已经提到的那样,init脚本以root身份运行,而屏幕属于不同的用户。当您键入screen -ls时,您将看到当前用户的屏幕,而不是系统上的所有屏幕。

是的,sudo screen -lssudo screen -r可以解决问题。

编辑(为了完整性和将来参考):正如OP指出的那样,还需要在屏幕命令中添加-d标志,以便在init中立即分离脚本,否则屏幕将保持连接状态。