Question Comment créer un service personnalisé qui démarrera automatiquement au démarrage sur Archlinux?


Je voudrais lancer une commande simple au démarrage sur Archlinux (systemd):

nohup fatrat -n &

J'ai ce travail sur Debian:

#! /bin/sh
# /etc/init.d/fatratWS

### BEGIN INIT INFO
# Provides: fatratWS
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: fatratWS init script.
# Description: Starts and stops fatrat Web Server services.
### END INIT INFO

#VAR
FATRAT_PID=$(ps aux | awk '/fatrat --nogui/ && !/awk/ && !/nohup/ {print $2}')

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script fatratWS"
if [ -z "$FATRAT_PID" ]; then
nohup fatrat --nogui &
echo "Started"
else
echo "fatratWS already started"
fi
;;
stop)
echo "Stopping script fatratWS"
if [ ! -z "$FATRAT_PID" ]; then
kill $FATRAT_PID
fi
echo "OK"
;;
status)
if [ ! -z "$FATRAT_PID" ]; then
echo "The fatratWS is running with PID = "$FATRAT_PID
else
echo "No process found for fatratWS"
fi
;;
*)
echo "Usage: /etc/init.d/fatratWS {start|stop|status}"
exit 1
;;
esac

exit 0

Comment puis-je obtenir la même chose sur Arch?

J'ai essayé:

[Unit]
Description=Fatrat NoGui Web Access Service

[Service]
ExecStart=/usr/bin/nohup /usr/bin/fatrat -n &
Type=forking

[Install]
WantedBy=multi-user.target

Mais il ne démarre pas au démarrage manuel (timeout)


9
2017-10-23 00:50


origine




Réponses:


Essaye ça:

[Unit]
Description=Fatrat NoGui Web Access Service
Requires=network.target
After=network.target

[Service]
ExecStart=/usr/bin/fatrat -n
Type=forking

[Install]
WantedBy=multi-user.target
  • J'ai supposé qu'un "Web Access Service" nécessitait un réseau, j'ai donc besoin de network.target.

  • L'utilisation de nohup est inutile car cette fonctionnalité est fournie par systemd lui-même, de même que pour le "&".

  • Comme nous n'utilisons plus nohup, le type deviendrait simple, cependant, l'interface Web disponible sur la version de git ne fonctionnera pas à moins que nous le fassions.

  • Pour plus d'informations sur les fichiers de service systemd, consultez la page de manuel "systemd.service" et https://wiki.archlinux.org/index.php/Systemd#Writing_custom_.service_files

  • Vous pourriez envisager d'ajouter Restart=always au [Service] section pour le faire redémarrer automatiquement s'il se bloque.

  • Placez le fichier de service à /etc/systemd/system/fatrat.service et l'activer pour le démarrage automatique via systemctl enable fatrat.service


13
2017-10-24 13:51



Merci, ça marche! La seule différence que je devais faire était d'ajouter User=my_user_name en dessous de [Service] section pour exécuter l'application en tant qu'utilisateur. De cette façon, l'application peut charger ses fichiers de configuration à partir de /home/my_user_name/.local/share/fatrat/data - Joudicek Jouda