====== 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}}