J'essaie d'écrire mon propre service systemd (simple) qui fait quelque chose de simple (comme écrire les numéros 1 à 10 dans un fichier, en utilisant le script Shell). Mon fichier de service ressemble à ci-dessous.
[Unit]
Description=NandaGopal
Documentation=https://google.com
After=multi-user.target
[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/usr/bin/hello.sh &
[Install]
RequiredBy = multi-user.target
Ceci est mon script Shell.
#!/usr/bin/env bash
source /etc/profile
a=0
while [ $a -lt 10 ]
do
echo $a >> /var/log//t.txt
a=`expr $a + 1`
done
Pour une raison quelconque, le service ne démarre pas et systemctl affiche la sortie ci-dessous.
root@TARGET:~ >systemctl status -l hello
* hello.service - NandaGopal
Loaded: loaded (/usr/lib/systemd/system/hello.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://google.com
J'essaie de comprendre ce qui n'a pas fonctionné au cours des 2 derniers jours. Quelqu'un pourrait-il m'aider ici?
Cordialement, nandanator
Type=Forking
, mais votre service ne fonctionne pas. Essayez Type=oneshot
ExecStart
, ce qui n'est pas nécessaire.disabled
, ce qui signifie qu'il n'était pas enabled
de démarrer au démarrage. Vous devez exécuter systemctl enable hello
pour qu'il démarre au démarrage.Tu peux vérifier man systemd.directives
pour trouver un index de toutes les directives que vous pouvez utiliser dans vos fichiers unit
.
Quelques points:
Si tu utilises Type=forking
, il est recommandé de spécifier PidFile.
Dans ton cas, Type=simple
et ExecStart sans &
marchera.
utilisation systemctl start service-name
pour démarrer un service
Utilisez ensuite systemctl status service-name
pour vérifier son état. l'état sera inactif/mort si le service n'est pas démarré.