Barra laterale

sistema:systemd:creare_script_personalizzati_per_systemd

Creare script personalizzati con systemd

Autore: Fabio Di Matteo
Ultima revisione: 25/11/2016 - 12:43

In questo articolo verranno mostrati i passaggi necessari per creare script personalizzati con systemd . Come prima cosa sara' necessario creare il nostro script bash . In questo caso usero' uno script per l'automount delle periferiche rimovibili.

/etc/automount.sh

#!/bin/bash
 
pathtoname() {
    udevadm info -p "/sys/$1" | awk -v FS== '/DEVNAME/ {print $2}'
}
 
while read -r _ _ event devpath _; do
        if [[ $event == add ]]; then
            devname=$(pathtoname "$devpath")
            udisksctl mount --block-device "$devname" --no-user-interaction
        fi
done < <(stdbuf -o L udevadm monitor --udev -s block)

Adesso invece andremo a creare la regola per gestire lo script tramite systemd. Creaimo il file /etc/systemd/system/automount.service con il seguente contenuto:

[Unit]
Description=Automount disk

[Service]
Type=simple
ExecStart=/etc/automount.sh
#ExecStop=

[Install]
WantedBy=multi-user.target

Sara' possibile abilitare il servizio con systemctl enable automount . Notare che la direttiva ExecStop= indica lo script da lanciare per fermare il servizio.

Creare un Timer

Serve creare la unit come sopra e poi il file .timer come segue.

[Unit]
Description=Backup Cloud al boot e settimanale
Wants=network-online.target
After=network-online.target

[Timer]
#OnCalendar=weekly
OnUnitActiveSec=1w
Persistent=true

[Install]
WantedBy=timers.target

e di conseguenza creare il relativo .service

[Unit]
Description=Backup dati
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
User=root
ExecStart=/usr/local/bin/backup-cloud.sh 
ExecStop=killall backup-cloud.sh

[Install]
WantedBy=multi-user.target


sistema/systemd/creare_script_personalizzati_per_systemd.txt · Ultima modifica: 05/06/2023 - 16:57 da Fabio Di Matteo