web-dev-qa-db-ja.com

アプリサーバーを起動するためのsystemdスクリプト-セクション「Unit」の不明なlvalue「StartLimitIntervalSec」

以下に示すように、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'
7
user1950349

おそらく、オンラインで読んだsystemdのドキュメントを別のバージョンで比較しているのではなく、自分のバージョンに一致するシステム上のドキュメントを使用しています。

自分のシステムでman systemd.unitを確認してください。あなたのバージョンでは、ディレクティブの名前が

StartLimitInterval=および[Service]ではなく[Unit]を使用してください。

systemd StartLimitIntervalSec を検索して答えを見つけました。

16
Mark Stosberg