Enable rc.local on systemd

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

След рестарт на системата командата или скрипта трябва да са изпълнени.

Leave a Reply

Your email address will not be published. Required fields are marked *