Je kunt verschillende redenen hebben om bij het starten van een systeem een script op te starten: je wilt een bepaalde dienst (service) starten, schijfruimte controleren, een back-up maken, enz. Vroeger werd daarvoor cron of SysV gebruikt, vandaag gebruiken we systemd.
In het hieronder beschreven voorbeeld beschrijven we een basis waarop je later kunt verder bouwen. We starten daarbij een script om de schijfruimte die door de /home/ map wordt ingenomen naar een tekstbestand in de /root/ map te schrijven.
Eerst moeten we een systemd startup script aanmaken, in de map /etc/systemd/system/ maken we het tekstbestand disk-space-check.service (bijvoorbeeld met de opdracht sudo joe /etc/systemd/system/disk-space-check.service
) met de volgende inhoud:
[Unit] After=network.target [Service] ExecStart=/usr/local/bin/disk-space-check.sh [Install] WantedBy=multi-user.target
After
: laat systemd weten wanneer het script moet uitgevoerd worden.
In ons geval na het opzetten van het netwerksysteem.
Wil je het script starten na het starten van de mysql database, gebruik dan mysql.service
.ExecStart
: hier plaats je het pad en naam van het uit te voeren script.WantedBy
: bij welk doelsysteem moet dit script uitgevoerd worden.Bovenstaand systemd startup script bevat het absolute minimum om een script via systemd te starten. Meer informatie kan je vinden in de manual pagina:
dany@pindabook:~> man systemd.service
Daarna schrijven we het uit te voeren script. De locatie en de naam van het script is al gedefinieerd in het systemd startup script. Het script kan je schrijven met de opdracht:
dany@pindabook:~> sudo joe /usr/local/bin/disk-space-check.sh
Met de volgende inhoud:
#!/bin/bash date > /root/disk_space_report.txt du -sh /home/ >> /root/disk_space_report.txt
Na het opslaan van het script, test je het met de volgende opdrachten:
dany@pindabook:~>sudo sh /usr/local/bin/disk-space-check.sh
dany@pindabook:~>sudo cat /root/disk_space_report.txt
vr okt 6 21:47:08 CEST 2017 9,5G /home/
Voor we het systeem herstarten, moeten we het script uitvoerbaar maken:
dany@pindabook:~> sudo chmod 744 /usr/local/bin/disk-space-check.sh
Daarna installeren en activeren we de systemd dienst (service) om het script uit te voeren bij het starten van het systeem.
dany@pindabook:~>sudo chmod 664 /etc/systemd/system/disk-space-check.service
[sudo] wachtwoord voor root: dany@pindabook:~>sudo systemctl daemon-reload
dany@pindabook:~>sudo systemctl enable disk-space-check.service
Created symlink from /etc/systemd/system/multi-user.target.wants/disk-space-check.service to /etc/systemd/system/disk-space-check.service.
Test voor je herstart het system startup script:
dany@pindabook:~>sudo systemctl start disk-space-check.service
dany@pindabook:~>sudo cat /root/disk_space_report.txt
Sat Oct 7 14:14:36 CEST 2017 9.5G /home/
Nu wordt bij elke systeemstart het script door systemd uitgevoerd.