====== rc.local в Ubuntu 18 и CentOS 7 ====== Для автозапуска скрипта/программы [[https://www.redhat.com/sysadmin/replacing-rclocal-systemd|правильней создать systemd unit файл]]. Многие ещё сидят на ядре 2.6, так что пока рано говорить о таких прогрессивных возможностях systemd. Решил записать инструкцию по rc.local для членов консервативной партии Linux, которую я благополучно покинул. rc.local жив в 2019 году. Всё это сделано для [[http://manpages.ubuntu.com/manpages/bionic/man8/systemd-rc-local-generator.8.html|обратной совместимости]]. Прекратите использовать rc.local, его время прошло! * Lennart Poettering - [[https://bugzilla.redhat.com/show_bug.cgi?id=734268|Plese remove /etc/rc.local or chmod -x it]] * stackexchange - [[https://unix.stackexchange.com/a/471871|Forget about rc.local]] ===== Ubuntu ===== В Ubuntu нет файла ''/etc/rc.local'' # file /etc/rc.local /etc/rc.local: cannot open `/etc/rc.local' (No such file or directory) Для упрощения тестирования я возьму [[https://www.redhat.com/sysadmin/replacing-rclocal-systemd|пример с командой **date** с сайта RedHat]] Тестовый файл ''/etc/rc.local'' #!/bin/bash echo `date +%F" "%T` "rc.local works!" >> /home/dx/rc.local-test.log exit 0 //Заметка для гиков #1 - какие кавычки надо использовать// * [[https://en.wikipedia.org/wiki/Grave_accent#Use_in_programming|Grave accent]] / [[https://ru.wikipedia.org/wiki/Гравис|Гравис]] * [[https://unix.stackexchange.com/questions/98391/what-is-the-difference-between-echo-date-echo-date-and-echo-date|What is the difference between echo `date`, echo “`date`”, and echo '`date`'?]] * https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html * https://www.grymoire.com/Unix/Quote.html#uh-1 Results may vary (крутяцкий альбом Бизкитов кстати) если вы ошиблись с кавычками. //Заметка для гиков #2 - к правильно называется **#!** в скрипте// * [[https://ru.wikipedia.org/wiki/Шебанг_(Unix)|https://ru.wikipedia.org/wiki/Шебанг_(Unix)]] * https://bash.cyberciti.biz/guide/Shebang Теперь нужно сделать файл исполняемым chmod +x /etc/rc.local //Заметка для гиков #3 - в чем разница между **chmod +x** и **chmod 755?**// * https://askubuntu.com/questions/932713/what-is-the-difference-between-chmod-x-and-chmod-755 * https://askubuntu.com/questions/29589/chmod-ux-versus-chmod-x#1075089 Активируем rc.local в systemd # systemctl enable rc-local # systemctl start rc-local В моем примере просто выводится дата/время и записывается в файл ''rc.local.test'' # cat rc.local-test.log 2019-12-20 02:01:18 rc.local works! 2019-12-20 02:01:42 rc.local works! Значит всё работает. ===== CentOS ===== В CentOS ''/etc/rc.local'' это симлинк на ''/etc/rc.d/rc.local'' На моем тестовом VPS сервис **rc-local** был включен по-умолчанию, а файл ''rc.local'' был исполняемым. Если у вас не так, то # chmod +x /etc/rc.local # systemctl enable rc-local # systemctl start rc-local ===== crontab ===== Кроме rc.local есть еще один простой вариант запуска скриптов/команд при загрузке ОС через crontab # crontab -e Выполняем скрипт через 60 секунд после ребута системы @reboot ( sleep 60 ; sh /home/dx/super_script.sh ) {{tag>linux systemd cron centos ubuntu}}