Wiki CgX

Parce que j'ai un cerveau, mais pas trop.

Outils pour utilisateurs

Outils du site


it:linux-systeme:systemd

systemd

Exemple de service basique

A placer dans /etc/systemd/system/

monService.service
[Unit]
Description=Mon service qui est beau
Documentation=URL si besoin
After=network.target

[Service]
Type=simple
User=cequetuveux
WorkingDirectory=/opt/monservice
ExecStart=ligne de commande pour lancer
Restart=on-failure

[Install]
WantedBy=multi-user.target

Lancer immédiatement & Démarrage au boot

systemctl daemon-reload
systemctl enable --now monService

Script pour créer un service basique

make_service.sh
#!/bin/bash
 
if [ $# -ne 4 ]
then
echo " "
echo 'Ce script fabrique un "service" qui lance un script shell sous systemd'
echo 'Il necessite obligatoirement 4 arguments qui sont:'
echo ' - Le nom du service'
echo ' - Le chemin complet du script a lancer'
echo ' - Le nom des services qui doivent deja avoir ete lances'
echo ' - yes ou no:'
echo '   yes si a la fin du script on considere que le service est toujours actif'
echo '   no dans le cas contraire (utile si le script en question est cense tourner tout le temps)'
echo ' '
echo ' Exemples :'
echo " $0 'monservice' '/home/moi/scripts/mon-script.sh' '' yes"
echo " $0 'monservice' '/home/moi/scripts/mon-script.sh' 'apache2.service postfix.service' yes"
echo ' '
echo " Dans le second cas, notre service ne sera lance qu'apres apache et postfix."
echo ' '
exit 1
fi
 
NAME=$1
SCRIPT_FILE=$2
AFTER=$3
REMAIN_AFTER_EXIT=$4
 
SERVICE_FILE="/etc/systemd/system/$1.service"
echo "[Unit]" >$SERVICE_FILE
echo "Description=Service basique pour lancer $SCRIPT_FILE" >>$SERVICE_FILE
echo "After=$AFTER" >>$SERVICE_FILE
echo "Requires=$AFTER" >>$SERVICE_FILE
echo "[Service]"  >>$SERVICE_FILE
if [ "$REMAIN_AFTER_EXIT" == "no" ]
then echo "Type=simple" >>$SERVICE_FILE;
else echo "Type=forking" >>$SERVICE_FILE; fi
echo "ExecStart=$SCRIPT_FILE" >>$SERVICE_FILE
echo "TimeoutSec=0" >>$SERVICE_FILE
echo "RemainAfterExit=$REMAIN_AFTER_EXIT" >>$SERVICE_FILE
echo "SysVStartPriority=99" >>$SERVICE_FILE
echo "RestartSec=5" >>$SERVICE_FILE
echo "Restart=on-failure" >>$SERVICE_FILE
echo "[Install]" >>$SERVICE_FILE
echo "WantedBy=multi-user.target" >>$SERVICE_FILE
chmod 755 $SCRIPT_FILE
systemctl -q enable $NAME

Limiter la place des logs journalctl

Combien de place ça prend ?

sudo journalctl --disk-usage

Tronquer ponctuellement

On tronque à 500Mo :

sudo journalctl --vacuum-size=500M

Pérénnisé

On ouvre le fichier de configuration :

vim /etc/systemd/journald.conf

On décommente SystemMaxUse et SystemMaxFileSize en ajoutant les valeurs qui vont bien :

SystemMaxUse=500M
#SystemKeepFree=
SystemMaxFileSize=500M
#SystemMaxFiles=100

Et voilà comment passer de 2Go à 500Mo de log.

it/linux-systeme/systemd.txt · Dernière modification : 12 Apr 2023 :: 13:21 de CgX