Hoe u opdrachten/scripts automatisch kunt uitvoeren tijdens het opnieuw opstarten of opstarten
Ik ben altijd gefascineerd door de dingen die er achter de schermen gebeuren als ik een Linux-systeem opstart en inlog. Door op een blank metaal op de aan/uit-knop te drukken of een virtuele machine te starten, zet je een reeks gebeurtenissen in gang die leiden tot een volledig functioneel systeem – soms in minder dan een minuut. Hetzelfde geldt wanneer u zich afmeldt en/of het systeem afsluit.
Wat dit interessanter en leuker maakt, is het feit dat je het besturingssysteem bepaalde acties kunt laten uitvoeren wanneer het opstart en wanneer je in- of uitlogt.
In dit distro-agnostische artikel zullen we de traditionele methoden bespreken om deze doelen in Linux te bereiken.
Opmerking: we gaan uit van het gebruik van Bash als hoofdshell voor aan- en uitloggebeurtenissen. Als u toevallig een andere gebruikt, kunnen sommige van deze methoden wel of niet werken. Raadpleeg bij twijfel de documentatie van uw shell.
Linux-scripts uitvoeren tijdens opnieuw opstarten of opstarten
Er zijn twee traditionele methoden om een opdracht uit te voeren of scripts uit te voeren tijdens het opstarten:
Methode #1 – Gebruik een cronjob
Naast het gebruikelijke formaat (minuut/uur/dag van de maand/maand/dag van de week) dat veel gebruikt wordt om een planning aan te geven, staat cron planner ook het gebruik van @reboot
toe. Deze richtlijn, gevolgd door het absolute pad naar het script, zorgt ervoor dat het wordt uitgevoerd wanneer de machine opstart.
Er zijn echter twee kanttekeningen bij deze aanpak:
- a) de cron daemon moet actief zijn (wat het geval is onder normale omstandigheden), en
- b) het script of het crontabbestand moet de omgevingsvariabelen bevatten (indien aanwezig) die nodig zijn (raadpleeg deze StackOverflow-thread voor meer details).
Methode #2 – Gebruik /etc/rc.d/rc.local
Deze methode is zelfs geldig voor op systemd gebaseerde distributies. Om deze methode te laten werken, moet u als volgt uitvoeringsrechten verlenen aan /etc/rc.d/rc.local
:
chmod +x /etc/rc.d/rc.local
en voeg uw script onderaan het bestand toe.
De volgende afbeelding laat zien hoe u twee voorbeeldscripts uitvoert (/home/gacanepa/script1.sh
en /home/gacanepa/script2.sh
) met behulp van een cron< job en rc.local respectievelijk, en hun respectieve resultaten.
#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
Houd er rekening mee dat aan beide scripts eerder uitvoerrechten moeten worden verleend:
chmod +x /home/gacanepa/script1.sh
chmod +x /home/gacanepa/script2.sh
Linux-scripts uitvoeren bij in- en uitloggen
Om een script uit te voeren bij het in- of uitloggen, gebruikt u respectievelijk ~.bash_profile
en ~.bash_logout
. Hoogstwaarschijnlijk moet u dit laatste bestand handmatig maken. Zet gewoon een regel neer waarin u uw script aanroept onder aan elk bestand, op dezelfde manier als voorheen, en u bent klaar om te gaan.
Samenvatting
In dit artikel hebben we uitgelegd hoe u een script uitvoert bij het opnieuw opstarten, aanmelden en afmelden. Als u andere methoden kunt bedenken die we hier hadden kunnen opnemen, kunt u het onderstaande opmerkingenformulier gebruiken om ze aan te wijzen. Wij horen graag van u!