以下に示すように、Ubuntu 14で正常に動作するupstart構成ファイルがあります。
#/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'
おそらく、オンラインで読んだsystemd
のドキュメントを別のバージョンで比較しているのではなく、自分のバージョンに一致するシステム上のドキュメントを使用しています。
自分のシステムでman systemd.unit
を確認してください。あなたのバージョンでは、ディレクティブの名前が
StartLimitInterval=
および[Service]
ではなく[Unit]
を使用してください。
systemd StartLimitIntervalSec を検索して答えを見つけました。