init.d 脚本未在启动时运行

Mar*_*ign 22 boot script ubuntu

我正在使用 screen 在我的专用服务器上托管一些反恐精英游戏服务器。当我想启动/停止服务器时,我运行了这个脚本:

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555 -tick 100 
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666 -tickrate 100
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0
Run Code Online (Sandbox Code Playgroud)

我将这个脚本(称为css-servers)放入/etc/init.d/其中,据我所知,这意味着它会在系统启动时运行。但是,当我使用检查活动屏幕时screen -ls,没有运行。

如何让这些在 Ubuntu Server 下启动时运行?

Mic*_*ton 42

仅仅有脚本/etc/init.d不足以让它在启动时运行。

要将其添加到您的启动中,您必须告诉 Ubuntu:

sudo update-rc.d css-servers defaults
Run Code Online (Sandbox Code Playgroud)

如果脚本格式正确,可执行位设置等,它应该在下次启动时启动。您从apt-get/Software Center安装的软件包会自动为您运行此命令或其等效命令,这就是您通常不必担心的原因关于它。

如果想立即启动,可以直接调用:

sudo service css-servers start
Run Code Online (Sandbox Code Playgroud)


Bil*_*hor 12

你已经完成了第一部分。 /etc/init.d是运行初始化脚本的地方。但是,它们不会自动运行。

它们按照/etc/rc*.d目录的符号链接指定的顺序运行。每个运行级别都有自己的目录。链接名称以 开头的脚本使用Kstop 参数运行,名称以 开头的脚本使用Sstart 参数运行。按照惯例,文件名以用于排序的两位数字开头KS后跟,并以脚本名称结尾/etc/init.d

链接可以手动创建,但通常使用脚本创建。通用脚本update-rc.d在 Ubuntu 上可用。该命令man update-rc.d将为您提供有关谁使用它的文档。在你的情况下尝试:

sudo update-rc.d css-servers defaults
Run Code Online (Sandbox Code Playgroud)

要使用 init 脚本启动它,请尝试:

sudo /etc/init.d/css-servers start
Run Code Online (Sandbox Code Playgroud)

我通常以这种方式启动和停止服务器,以确保脚本按需要工作。然后我运行update-rc.d将它添加到/etc/rc.d运行级别目录。