systemd 脚本用于在我的应用服务器关闭或系统重新启动时立即启动它

systemd 脚本用于在我的应用服务器关闭或系统重新启动时立即启动它

我有一个如下所示的 upstart 配置文件,它在 Ubuntu 14 中运行良好:

#/etc/init/data_server.conf
#sudo start data_server
#sudo stop data_server
#sudo status data_server

start on runlevel [2345]
stop on runlevel [016]

chdir /opt/hold/data_server
respawn

post-start script
    echo "data server started at `date +"%F %T"` on `hostname -f`" | mailx -r "[email protected]" -s "data server Started" "[email protected]"
end script

post-stop script
  sleep 30
end script

limit core unlimited unlimited
limit nofile 100000 100000
setuid goldy
exec ./data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5

现在我们正在转向 Ubuntu 16,所以我们不能使用upstart,看起来我们需要systemd在这里使用。我需要做哪些更改才能在其中编写脚本systemd

我必须确保每当系统重新启动或应用程序被终止时它都会systemd自动启动我的脚本,进而启动我的data server

答案1

您的 upstart 脚本将发生很大变化。您不需要手动指定那么多指令,因此它也将短得多。

让一个进程在启动时总是启动,并在崩溃时重新启动只需一行:

Restart=always

我不知道您需要保留多少自定义更改,但至少看起来您需要保留chdirexec命令。

以下是您的应用程序的基本 systemd 脚本的示例:

[Unit]
Description=My-service

[Service]
Type=simple
WorkingDirectory=/opt/hold/data_server
ExecStart=/path/to/data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5
Restart=always

[Install]
WantedBy=multi-user.target

我发现在编写自定义单元文件时这是一个方便的资源:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

相关内容