Содержание
rc.local в Ubuntu 18 и CentOS 7
Для автозапуска скрипта/программы правильней создать systemd unit файл. Многие ещё сидят на ядре 2.6, так что пока рано говорить о таких прогрессивных возможностях systemd. Решил записать инструкцию по rc.local для членов консервативной партии Linux, которую я благополучно покинул. rc.local жив в 2019 году. Всё это сделано для обратной совместимости.
Прекратите использовать rc.local, его время прошло!
- Lennart Poettering - Plese remove /etc/rc.local or chmod -x it
- stackexchange - 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)
Для упрощения тестирования я возьму пример с командой **date** с сайта RedHat
Тестовый файл /etc/rc.local
#!/bin/bash echo `date +%F" "%T` "rc.local works!" >> /home/dx/rc.local-test.log exit 0
Заметка для гиков #1 - какие кавычки надо использовать
Results may vary (крутяцкий альбом Бизкитов кстати) если вы ошиблись с кавычками.
Заметка для гиков #2 - к правильно называется #! в скрипте
Теперь нужно сделать файл исполняемым
chmod +x /etc/rc.local
Заметка для гиков #3 - в чем разница между chmod +x и chmod 755?
Активируем 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 )
Обсуждение