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'
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 .