Que dois-je mettre dans la [install]
section, de sorte que systemd s'exécute /home/me/so.pl
juste avant l'arrêt et avant d' /proc/self/net/dev
être détruit?
[Unit]
Description=Log Traffic
[Service]
ExecStart=/home/me/so.pl
[Install]
?
La solution suggérée est de faire fonctionner l'unité de service comme un service normal - consultez la [Install]
section. Donc tout doit être pensé en sens inverse, les dépendances aussi. Parce que l'ordre d'arrêt est l'ordre de démarrage inverse. C'est pourquoi le script doit être placé dans ExecStop=
.
La solution suivante fonctionne pour moi:
[Unit]
Description=...
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=<your script/program>
[Install]
WantedBy=multi-user.target
RemainAfterExit=true
est nécessaire lorsque vous n'avez pas d' ExecStart
action.
Après avoir créé le fichier, assurez-vous de systemctl daemon-reload
et systemctl enable yourservice --now
.
Je viens de le recevoir de systemd IRC, les crédits vont à mezcalero.
ExecStart=/bin/true
.RemainAfterExit=true
est requise quand il n'y en a pasExecStart
carsystemd
elle ne tentera pas de s'exécuterExecStop
si elle pense que le service n'est pas en cours d'exécution.RemainAfterExit=true
causesystemd
à croire que le service est en cours d' exécution, ce qui provoque son exécutionExecStop
à l' arrêt.Note that it is usually not sufficient to specify a command for this setting that only asks the service to terminate (for example, by queuing some form of termination signal for it), but does not wait for it to do so.
Autant que je sache, c'est ce dont j'ai besoin (mais je ne sais pas exactement pourquoi).
la source
kexec.target
au bit AvantWantedBy=shutdown.target reboot.target halt.target
à la[Unit]
section.Before=
&After=
ne changez pas les dépendances.Pour exécuter un service juste avant de démarrer l’ un des services de redémarrage / arrêt / arrêt / kexec (c’est-à-dire au dernier moment avant que le système de fichiers racine ne soit remonté en lecture seule), utilisez cette configuration de service:
Activez-le avec:
Pour exécuter un script juste avant le redémarrage / shutdown / halt / kexec (lorsque vous ne pouvez pas écrire sur le système de fichiers racine car il a été remonté en lecture seule), ajoutez ce fichier exécutable dans le
/usr/lib/systemd/system-shutdown
répertoire.Regarde aussi:
https://www.freedesktop.org/software/systemd/man/bootup.html
https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html
la source
final.target
. Idéalement, j'aimerais que ce soit la première chose à exécuter après l'utilisateur$ sudo reboot
.Je ne suis pas tout à fait sûr mais je ne pense pas que vous ayez besoin de la partie installation même si je l'ai ajoutée explicitement. Je ne l'ai pas non plus testé, mais je pense que cela devrait vous aider à démarrer:
la source