rc.local в Debian

Файл rc.local в Debian используется для того чтобы добавлять собственные скрипты, которые будут выполняться после старта системы.

 

rc.local в Debian и автозапуск сервисов

rc local по умолчанию выглядит следующим образом:

mcedit /etc/rc.local

 

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will «exit 0» on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


exit 0

 

Он содержит только комментарии и не является исполняемым, поэтому не используется. Добавить в него собственные команды или путь к скриптам — самый простой способ выполнять что-либо после старта системы.

Для собственных сервисов можно писать демоны и скрипты инициализации в стиле SysV, Upstart или SystemD, но проще всего делать это меняя /etc/rc.local

 

Все команды прописываются перед строкой с нулевым кодом выхода. Например, можно написать команду, по которой в одном из Docker контейнеров будет перезапускаться Unicorn

docker exec -it `docker ps | awk {'print $1'} | head -n 2 | tail -n 1` bash -c «supervisorctl restart unicorn»

exit 0

 

Чтобы файл начал использоваться системой его нужно сделать исполняемым

chmod +x /etc/rc.local

 

То же действие нужно проделать со скриптами если они включаются в rc.local

 

Проверить нет ли каких-то ошибок можно выполнив файл из консоли — при этом служба стартует и вместе с тем в первый раз выполняются действия, указанные в файле

/etc/init.d/rc.local start

Если скрипт (или добавленная команда) отработал штатно можно перезагружать сервер.

Лучше всего также писать служебную информацию в лог чтобы контролировать все ли идет нормально и устранять неполадки если они возникают.

 

reboot

 


В системах с systemd — например, в Debian9:

systemctl enable rc-local

systemctl start rc-local.service


 

Если требуется прекратить использовать скрипт нужна такая команда

/etc/init.d/rc.local stop

 

Служба rc.local очень часто оказывается полезна при решении повседневных административных задач.

Читайте про управление Docker контейнерами.

Запись опубликована автором в рубрике Bash.