Différences entre versions de « Systemctl service »
Ligne 41 : | Ligne 41 : | ||
== Préparation pour devenir un service == | == Préparation pour devenir un service == | ||
+ | === shebang=== | ||
Nous pourrions utiliser PHP à chaque fois que l'on veut invoquer notre service mais on va plutôt ajouter le [https://fr.wikipedia.org/wiki/Shebang shebang] à la première ligne de notre fichier ''clock.php'' : | Nous pourrions utiliser PHP à chaque fois que l'on veut invoquer notre service mais on va plutôt ajouter le [https://fr.wikipedia.org/wiki/Shebang shebang] à la première ligne de notre fichier ''clock.php'' : | ||
<pre> | <pre> | ||
Ligne 50 : | Ligne 51 : | ||
php: /usr/bin/php /usr/lib64/php /usr/share/php /usr/share/man/man1/php.1.gz | php: /usr/bin/php /usr/lib64/php /usr/share/php /usr/share/man/man1/php.1.gz | ||
</pre> | </pre> | ||
+ | === Droit d'exécution === | ||
Maintenant que nous avons ajouté le shebang, ''bash'' va savoir comment exécuter notre programme et il ne nous reste plus qu'a modifier ses droits pour le rendre exécutable : | Maintenant que nous avons ajouté le shebang, ''bash'' va savoir comment exécuter notre programme et il ne nous reste plus qu'a modifier ses droits pour le rendre exécutable : | ||
<pre> | <pre> | ||
Ligne 57 : | Ligne 59 : | ||
<pre> | <pre> | ||
# ./clock.php | # ./clock.php | ||
+ | </pre> | ||
+ | === Ajout dans le path === | ||
+ | Pour reproduire le même comportement que les autres programmes, il est possible d'ajouter notre programme au path pour pouvoir l'appeler grâce à l’autocomplétion. Pour cela, nous allons ajouter un lien symbolique dans le répertoire ''/usr/bin/'' : | ||
+ | <pre> | ||
+ | # ln -fs /opt/ | ||
</pre> | </pre> |
Version du 17 mai 2024 à 20:58
Introduction
Dans cet article nous allons créer un service, très simplement, avec Systemctl.
Pour cela, nous allons d'abord utiliser PHP pour fabriquer notre service, puis nous allons créer un fichier service pour automatiser son démarrage !
Le programme
Création
Le service que nous allons faire va simplement écrire le temps unix dans un fichier de journalisation pour que, une fois démarré et passé en tâche de fond, nous puissions nous assurer qu'il tourne toujours !
Dans le dossier /opt/php-service nous allons créer le fichier clock.php :
<?php
define("LOG_FILE", "/tmp/clock.log");
while(1){
file_put_contents(LOG_FILE, time()."\n", FILE_APPEND);
sleep(2);
}
Le but de ce programme est d'écrire, toutes les 2 secondes, la date dans le fichier /tmp/clock.log.
Pas un démon
On peut remarquer que ce n'est même pas un démon et qu'il ne rend pas la main lorsque nous allons l’exécuter. D’ailleurs il n'utilise aucune des fonctions décrites dans cet article car nous allons demander à SystemD de s'occuper de tout.
Test sans SystemD
Nous allons tester ce programme :
# php clock.php
Puis dans un autre terminal, nous pouvons faire :
# tail -f /tmp/clock.php 1715971610 1715971612 1715971614 1715971616 ...
Préparation pour devenir un service
shebang
Nous pourrions utiliser PHP à chaque fois que l'on veut invoquer notre service mais on va plutôt ajouter le shebang à la première ligne de notre fichier clock.php :
#!/usr/bin/php
Le dossier de l'exécutable de PHP peut changer en fonction des distributions Linux et, si vous avez un doute, n'hésitez pas à utiliser la commande whereis :
# whereis php php: /usr/bin/php /usr/lib64/php /usr/share/php /usr/share/man/man1/php.1.gz
Droit d'exécution
Maintenant que nous avons ajouté le shebang, bash va savoir comment exécuter notre programme et il ne nous reste plus qu'a modifier ses droits pour le rendre exécutable :
# chmod +x clock.php
On peut maintenant exécuter notre programme ainsi :
# ./clock.php
Ajout dans le path
Pour reproduire le même comportement que les autres programmes, il est possible d'ajouter notre programme au path pour pouvoir l'appeler grâce à l’autocomplétion. Pour cela, nous allons ajouter un lien symbolique dans le répertoire /usr/bin/ :
# ln -fs /opt/