Sådan udføres automatisk kommandoer/scripts under genstart eller opstart


Jeg er altid fascineret af de ting, der foregår bag kulisserne, når jeg starter et Linux-system og logger på. Ved at trykke på tænd/sluk-knappen på et blankt metal eller starte en virtuel maskine sætter du i gang en række begivenheder, der fører til et fuldt funktionelt system - nogle gange på mindre end et minut. Det samme gælder, når du logger af og/eller lukker systemet.

Hvad der gør dette mere interessant og sjovt er det faktum, at du kan få operativsystemet til at udføre bestemte handlinger, når det starter, og når du logger på eller logger ud.

I denne distro-agnostiske artikel vil vi diskutere de traditionelle metoder til at nå disse mål i Linux.

Bemærk: Vi antager brugen af Bash som hovedskal til logon- og logouthændelser. Hvis du tilfældigvis bruger en anden, fungerer nogle af disse metoder måske eller måske ikke. Hvis du er i tvivl, se dokumentationen til din skal.

Udførelse af Linux-scripts under genstart eller opstart

Der er to traditionelle metoder til at udføre en kommando eller køre scripts under opstart:

Udover det sædvanlige format (minut/time/dag i måned/måned/ugedag), der er meget brugt til at indikere en tidsplan, tillader cron-planlægger også brugen af @reboot . Dette direktiv, efterfulgt af den absolutte vej til scriptet, får det til at køre, når maskinen starter.

Der er dog to forbehold for denne tilgang:

  1. a) cron-dæmonen skal køre (hvilket er tilfældet under normale omstændigheder) og
  2. b) scriptet eller crontab-filen skal indeholde de miljøvariabler (hvis nogen), der er nødvendige (se denne StackOverflow-tråd for flere detaljer).

Denne metode er gyldig selv for systemd-baserede distributioner. For at denne metode skal fungere, skal du udføre tilladelser til /etc/rc.d/rc.local som følger:

# chmod +x /etc/rc.d/rc.local

og tilføj dit script i bunden af filen.

Det følgende billede viser, hvordan du kører to eksempler på scripts ( /home/gacanepa/script1.sh og /home/gacanepa/script2.sh ) ved hjælp af et cron-job og rc. lokale henholdsvis og deres respektive resultater.

#!/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

Husk, at begge scripts tidligere skal have udført tilladelser:

$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh

Udførelse af Linux-scripts ved logon og logout

For at udføre et script ved logon eller logout skal du bruge henholdsvis ~ .bash_profile og ~ .bash_logout . Mest sandsynligt bliver du nødt til at oprette sidstnævnte fil manuelt. Bare slip en linje med påkald af dit script i bunden af hver fil på samme måde som før, og du er klar til at gå.

I denne artikel har vi forklaret, hvordan man kører script ved genstart, logon og logout. Hvis du kan tænke på andre metoder, vi kunne have inkluderet her, er du velkommen til at bruge kommentarformularen nedenfor for at påpege dem. Vi ser frem til at høre fra dig!