Как да изпълнявате автоматично команди/скриптове по време на рестартиране или стартиране


Винаги съм очарован от нещата, които се случват зад кулисите, когато стартирам Linux система и вляза. Чрез натискане на бутона за захранване на гол метал или стартиране на виртуална машина, вие задвижвате поредица от събития, които водят до напълно функционираща система – понякога за по-малко от минута. Същото важи и когато излезете и/или изключите системата.

Това, което прави това по-интересно и забавно, е фактът, че можете да накарате операционната система да изпълнява определени действия, когато се зарежда и когато влизате или излизате.

В тази дистро-агностична статия ще обсъдим традиционните методи за постигане на тези цели в Linux.

Забележка: Ще приемем използването на Bash като основна обвивка за събития за влизане и излизане. Ако се случи да използвате друг, някои от тези методи може или не могат да работят. Ако се съмнявате, вижте документацията на вашия шел.

Изпълнение на Linux скриптове по време на рестартиране или стартиране

Има два традиционни метода за изпълнение на команда или стартиране на скриптове по време на стартиране:

Метод №1 – Използвайте задача на cron

Освен обичайния формат (минута/час/ден от месеца/месец/ден от седмицата), който се използва широко за указване на график, cron Scheduler позволява също използването на @reboot. Тази директива, последвана от абсолютния път до скрипта, ще го накара да се изпълни, когато машината се стартира.

Има обаче две предупреждения за този подход:

  1. a) cron демонът трябва да работи (какъвто е случаят при нормални обстоятелства) и
  2. b) скриптът или crontab файлът трябва да включва променливите на средата (ако има такива), които ще са необходими (вижте тази тема на StackOverflow за повече подробности).

Метод №2 – Използвайте /etc/rc.d/rc.local

Този метод е валиден дори за базирани на systemd дистрибуции. За да работи този метод, трябва да предоставите разрешения за изпълнение на /etc/rc.d/rc.local, както следва:

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

и добавете своя скрипт в долната част на файла.

Следното изображение показва как да стартирате два примерни скрипта (/home/gacanepa/script1.sh и /home/gacanepa/script2.sh) с помощта на cron< job и rc.local, съответно, и съответните им резултати.

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

Имайте предвид, че и на двата скрипта трябва предварително да бъдат предоставени разрешения за изпълнение:

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

Изпълнение на Linux скриптове при влизане и излизане

За да изпълните скрипт при влизане или излизане, използвайте съответно ~.bash_profile и ~.bash_logout. Най-вероятно ще трябва да създадете последния файл ръчно. Просто пуснете ред, извикващ вашия скрипт в долната част на всеки файл по същия начин както преди, и сте готови.

Резюме

В тази статия обяснихме как да стартирате скрипт при рестартиране, влизане и излизане. Ако се сещате за други методи, които бихме могли да включим тук, не се колебайте да използвате формата за коментари по-долу, за да ги посочите. Очакваме да се чуем!