Enable rc.local on systemd
Systemd е съкращение на System Management Daemon. Systemd е новият вариант на init който стартира всички процеси в операционната система. Първият процес представлява именно init и идентификационния му номер (pid) винаги е 1. systemd е проектирана, за да превъзмогне недостатъците на init. Тя представлява процес, стартиран на заден фон, който стартира други процеси паралелно, а не поетапно, както init. По този начин ускорява първоначалното зареждане на операционната система. При init системата започва нов процес, само ако предишният е завършил стартирането си и е зареден в паметта. Това често води до по-бавно стартиране на системата.
В systemd от Ubuntu 16.04 нагоре, шокиращо за мен го няма стария файл /etc/rc.local в който копирахме команди или пътища към скриптове които да се заредят след като се стартира операционната система. Разбира се това има как да се поправи:
Създаваме файла rc-local.service.
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 |
След което създаваме самия файл rc.local.
sudo nano /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 |
Променяме правата за да може да се изпълнява файла.
sudo chmod 755 /etc/rc.local |
Разрешаваме, стартираме и преглеждаме състоянието на rc.local
sudo systemctl enable rc-local sudo systemctl start rc-local.service sudo systemctl status rc-local.service |
Копираме команда или път към скрипт в rc.local преди реда exit 0.
sudo nano /etc/rc.local |
След рестарт на системата командата или скрипта трябва да са изпълнени.
SysVStartPriority=99 – е вече отпаднало!