Якщо ви запускаєте дистрибутив Linux з використанням Systemd, то можете помітити, що при завантаженні системи інструкції з файлу /etc/rc.local
не виконуються. Далі в статті йдеться про те як це виправити.
Якщо раптом при виконанні команди
sudo systemctl status rc.local
побачите подібне повідомлення:$ sudo systemctl status rc-local ○ rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/lib/systemd/system/rc-local.service; static) Drop-In: /usr/lib/systemd/system/rc-local.service.d └─debian.conf Active: inactive (dead) Docs: man:systemd-rc-local-generator(8)Або інше, відмінне від "Active: active", а
sudo systemctl enable rc-local
видасть$ sudo systemctl enable rc-local The unit files have no installation config (WantedBy=, RequiredBy=, Also=, Alias= settings in the [Install] section, and DefaultInstance= for template units). This means they are not meant to be enabled using systemctl. Possible reasons for having this kind of units are: • A unit may be statically enabled by being symlinked from another unit's .wants/ or .requires/ directory. • A unit's purpose may be to act as a helper for some other unit which has a requirement dependency on it. • A unit may be started when needed via activation (socket, path, timer, D-Bus, udev, scripted systemctl call, ...). • In case of template units, the unit is meant to be enabled with some instance name specified.То можна виконати наступні інструкції, які мають виправити ситуацію:
$ echo "[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target" | sudo tee /etc/systemd/system/rc-local.service > /dev/null
$ printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local #!/bin/bash exit 0
$ sudo chmod +x /etc/rc.local
$ sudo systemctl enable rc-local Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /etc/systemd/system/rc-local.service.
$ sudo systemctl start rc-local.serviceІ отримати результат:
$ sudo systemctl status rc-local.service * rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; preset: enabled) Drop-In: /usr/lib/systemd/system/rc-local.service.d `-debian.conf Active: active (exited) since Mon 2023-09-25 13:38:53 EEST; 15min ago Process: 34112 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS) CPU: 1ms Sep 25 13:38:53 oghome systemd[1]: Starting rc-local.service - /etc/rc.local Compatibility... Sep 25 13:38:53 oghome systemd[1]: Started rc-local.service - /etc/rc.local Compatibility.За мотивами статті How to Enable /etc/rc.local with Systemd.