我有一个如下所示的 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 ./proc_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5
现在我们正在转向 Ubuntu 16,所以我们不能使用upstart
,但看起来我们需要systemd
在这里使用。我必须确保每当系统重新启动或应用程序被终止时,它都应该systemd
自动启动我的脚本,进而启动我的data server
。所以我想出了下面的systemd
脚本:请让我知道这是否是正确的方法,因为这是我第一次这样做?
[Unit]
Description=test server
After=network.target
StartLimitIntervalSec=0
[Service]
User=goldy
Group=goldy
Type=simple
WorkingDirectory=/opt/hold/data_server
ExecStart=/opt/hold/data_server/proc_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5
Restart=always
RestartSec=3
LimitNOFILE=100000
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
每当我运行上述脚本时,它都会出现这个错误,我不确定是什么问题?
[/lib/systemd/system/queue_server_two.service:3] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit'
答案1
您可能会比较systemd
在线阅读的不同版本的文档,而不是使用系统上与您的版本相匹配的文档。
检查man systemd.unit
一下你自己的系统。你可能会发现在你的版本上,该指令被命名为
StartLimitInterval=
并且 应该被使用[Service]
,而不是[Unit]
。
我通过搜索找到了答案systemd StartLimitIntervalSec。