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

Joe*_*oel 1 sockets linux bash shell startup

我已经在/etc/init.d/目录中添加了一个名为screen_tronserver.sh的脚本。我已经设置了权限,因此可以执行并调用

update-rc.d /etc/init.d/screen_tronserver.sh defaults 100
Run Code Online (Sandbox Code Playgroud)

将脚本添加到启动。该文件中的内容如下:

#!/bin/bash
echo "creating screen and starting tron server..."
screen -S tronserver -m /home/pi/programming/tronserver/a.out
Run Code Online (Sandbox Code Playgroud)

a.out文件是运行我创建的服务器的已编译程序。现在当我打电话

screen -ls
Run Code Online (Sandbox Code Playgroud)

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

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

Chr*_*itz 5

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

所以是的,sudo screen -ls否则sudo screen -r将解决问题。

编辑(出于完整性和将来的参考):正如OP所指出的,还必须将-d标志添加到screen命令中以立即在init脚本中分离,否则屏幕将保持连接状态。