web-dev-qa-db-fra.com

script systemd pour démarrer mon serveur d'applications - lvalue inconnue 'StartLimitIntervalSec' dans la section 'Unité'

J'ai un fichier de configuration parvenu comme indiqué ci-dessous qui fonctionne bien dans 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

Nous passons maintenant à Ubuntu 16, nous ne pouvons donc pas utiliser upstart et il semble que nous devons utiliser systemd ici. Je dois m'assurer que chaque fois que le système est redémarré ou que l'application est supprimée, il doit démarrer automatiquement mon script systemd qui, à son tour, démarre mon data server. J'ai donc créé le script ci-dessous systemd: faites-moi savoir si c'est la bonne façon de le faire pour la première fois?

[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

Chaque fois que je lance le script ci-dessus, cela me donne cette erreur, je ne suis pas sûr de ce qui ne va pas?

[/lib/systemd/system/queue_server_two.service:3] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit'
7
user1950349

Vous comparez probablement systemd documents que vous avez lus en ligne pour une version différente au lieu d'utiliser les documents sur votre système qui correspondent à votre version.

Vérifier man systemd.unit sur votre propre système. Vous pouvez constater que sur votre version, la directive est nommée

StartLimitInterval= et doit être utilisé [Service], ne pas [Unit].

J'ai trouvé la réponse en recherchant systemd StartLimitIntervalSec .

16
Mark Stosberg