使用带有init.d的屏幕时出现意外行为


1

我在启动时使用以下命令添加了一个shell脚本:

su - root -c "/usr/bin/screen -dmS SomeServer java -jar /home/SomeServer.jar"

当我正常运行此命令时,screen会创建并运行。但是当我screen -ls在重启后使用时,我什么也看不见。

有趣的是SomeServer.jar内置了http服务器,当我使用时netstat我可以看到一个Java进程正在侦听这个端口。

我正在使用Ubuntu 14.04。

Answers:


0

我看不出上面的命令如何可能在Ubuntu上工作:su到root会提示你输入root的密码。祝你好运,在Ubuntu中找到它。

上面的命令应该是:

 sudo /usr/bin/screen -dmS SomeServer java -jar /home/SomeServer.jar

没有引号。我还要问你:如果你创建了一个启动脚本来执行此操作,为什么还需要以root身份执行上述命令?它将自动执行,即使你在/etc/rc.local中包含上面的行,没有sudo限定符,这是一种在启动时启动它的快速而肮脏的方法。

我无法测试上面的命令,所以我依靠你告诉我是否需要更多修复。


它是一个服务器,没有ant root密码。它有一个root帐户。仍在运行你的解决方案会产生相同的输出
Madhurendra Sachan 2014年

0

假设“重新启动”不是您帖子中的错误类型,您的问题是屏幕不会在重启周期中持续存在。

如果这是一个错误而您实际上没有重新启动,那么很可能您没有screen -ls以root用户身份运行- 屏幕只显示当前用户的活动屏幕会话。使用sudo su -切换到root,然后再试一次。


我尝试使用所有用户。甚至列出所有活动屏幕使用ls -laR /var/run/screen/但没有找到活动屏幕
Madhurendra Sachan 2014年

您是否在这种情况下重启主机?
加勒特2014年

我正在重启。
Madhurendra Sachan 2014年

那是你的问题。屏幕不会在重新启动后持续存在。
Garrett 2014年

我无法理解这个问题。当我在init.d中添加相同的命令时,没有屏幕在运行。但命令继续在后台运行。但是当我正常运行相同的命令时,我会在列表中显示屏幕。
Madhurendra Sachan 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.