【问题标题】:Screen not starting from rc.local屏幕不是从 rc.local 开始的
【发布时间】:2017-06-20 18:05:09
【问题描述】:

我有一个问题,我无法在启动时使用 rc.local 文件启动屏幕会话。我正在启动的特定屏幕是用于 spigot minecraft 服务器。

这是我的 rc.local 文件:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/home/pi/Documents/bootlog.sh
/home/spigot1_12/startspigot.sh
exit 0

这是 startspigot.sh 脚本(使用 chmod u+x):

#!/bin/bash

cd /home/spigot1_12

boot=$(date)

echo "Starting spigot server in screen \"minecraft\" @  $boot " >> /home/pi/Documents/minecraftlog


screen -S minecraft java -Xms512M -Xmx1008M -jar /home/spigot1_12/spigot-1.12.jar nogui

minecraftlog 文件在每次启动时都会更新,因此脚本会运行。

当我运行命令“sudo sh startspigot.sh”时,一切正常。屏幕启动并更新 minecraftlog 文件。我可以用“sudo screen -ls”再次找到屏幕

然而,在启动时,“sudo screen -ls”和“screen -ls”都没有返回任何套接字。

是什么原因造成的?仅有的两个用户是“pi”和root。

提前致谢!

【问题讨论】:

标签: linux bash gnu-screen rc


【解决方案1】:

以当前用户(rc.local = root)在新的分离屏幕中启动脚本:

screen -dmS <session name> <command>,例如:

screen -dmS screenName bash /home/user/run.sh


从 rc.local 以 user 启动一个脚本:

runuser -l user -c 'screen -dmS screenName bash /home/user/run.sh'

【讨论】:

    【解决方案2】:

    以分离模式运行屏幕(当您没有活动终端时,例如在 rc.local 或 crontab 中):

    screen -dm -S <session name> <command>

    -d -m 以“分离”模式启动屏幕

    -S 创建新会话时,该选项可用于为会话指定一个有意义的名称。

    【讨论】:

      猜你喜欢
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多