Раньше (Precise, Trusty
) я использовал конфигурационный файл rc.local
дабы прописать путь до скриптов если хотел чтобы они запускались вместе с системой, а тут нужно было прописать запуск RocketChat
, но на Ubuntu 18.04 Server
такого файла нет. Как быть, может можно его вернуть. Вроде как можно, вот об этом и пойдет речь в текущей заметке.
Создаю файл сервиса:
ekzorchik@srv-bionic:~$ sudo nano /etc/systemd/system/rc-local.service
[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
ekzorchik@srv-bionic:~$ sudo chmod +x /etc/rc.local
ekzorchik@srv-bionic:~$ sudo systemctl enable rc-local
ekzorchik@srv-bionic:~$ sudo systemctl start rc-local
ekzorchik@srv-bionic:~$ sudo systemctl status rc-local | head -n5
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/etc/systemd/system/rc-local.service; enabled-runtime; vendor preset: enabled)
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: active (exited) since Thu 2019-01-24 20:21:10 MSK; 9min ago
Создаю файл /etc/rc.local
ekzorchik@srv-bionic:~$ sudo nano /etc/rc.local
#!/bin/sh -e
exit 0
ekzorchik@srv-bionic:~$ sudo chmod +x /etc/rc.local
Включаю созданный сервис и запускаю:
ekzorchik@srv-bionic:~$ sudo systemctl enable rc-local
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /etc/systemd/system/rc-local.service.
ekzorchik@srv-bionic:~$ sudo systemctl start rc-local.service
ekzorchik@srv-bionic:~$ sudo systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset:
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: active (exited) since Thu 2019-01-24 20:21:10 MSK; 7s ago
Process: 733 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
Jan 24 20:21:10 srv-bionic systemd[1]: Starting /etc/rc.local Compatibility...
Jan 24 20:21:10 srv-bionic systemd[1]: Started /etc/rc.local Compatibility.
Теперь если мне что-либо нужно запустить вместе с системой, к примеру скрипт, мне остается только выше строки exit 0
прописать путь до скрипта и в момент когда система будет загружаться выполнится мой скрипт.
Проверяю, в конфигурационный файл /etc/rc.local
добавляю
ekzorchik@srv-bionic:~$ sudo nano /etc/rc.local
#!/bin/sh -e
echo 1 > /tmp/user
exit 0
ekzorchik@srv-bionic:~$ sudo reboot
ekzorchik@srv-bionic:~$ cat /tmp/user
1
На заметку: Файл сервиса также можно создать используя следующую команду:
ekzorchik@srv-bionic:~$ sudo systemctl edit --full rc-local
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
Затем создаю также файл и добавляю ему атрибуты запуска, как выше, если бы делал все вручную.
ekzorchik@srv-bionic:~$ sudo tee /etc/rc.local <<EOF
#!/bin/sh -e
exit 0
EOF
Скрипт успешно отработал. Значит и моя строка запуска RocketChat
также произведет запуск вместе с загрузкой системы как я и планировал. Пока считаю данную заметку выполненной, если что будет добавить я вернусь к ней. А пока на этом всё, с уважением автор блога Олло Александр aka ekzorchik.