Zoeken op website

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:

  1. a) de cron daemon moet actief zijn (wat het geval is onder normale omstandigheden), en
  2. 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!