Файл 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 необходимость в rc-local практически отпала, функция rc-local реализуется за счет systemd. Но обратная совместимость сохраняется, в Debian можно включить сервис rc-local через systemd:
systemctl enable rc-local
systemctl start rc-local.service
Если требуется прекратить использовать скрипт нужна такая команда
/etc/init.d/rc.local stop
Служба rc.local очень часто оказывается полезна при решении повседневных административных задач.
Читайте про управление Docker контейнерами.