Systemd не буду переписувати те що вже скрізь написано. Коротко - сервіси запуску всього і вся в Лінукс, демони(daemon) висять в фоні та щось там виконують. Їх можна подивитися в top
або htop
як процеси. Управління цими процесами через команду systemctl
:
systemctl enable назва.service
- активує сервіс для подальшого автоматичного запуску разом з системою.
systemctl disable назва.service
- деактивує автоматичний запуск.
systemctl start назва.service
- запускає сервіс, але якщо не буде systemctl enable назва.service
при перезапуску системи він не запуститься.
systemctl stop назва.service
- зупиняє сервіс.
systemctl restart назва.service
- перезапускає сервіс.
systemctl reload назва.service
- перезапускає конфігурацію якщо є внесенні зміни в конфігураційному файлі для цього сервісу.
За допомогою команди systemctl --help
дивимось додаткові опції які пропонує ця команда. Щоб подивитися всі ці сервіси(які працюють які не працюють, які активовані які ні) за допомогою команди
systemctl -a
systemctl list-unit-files
systemctl status -a
.
Самі сервіси знаходять в /etc/systemd/system
і в /usr/lib/systemd/system
.
Щоб глянути їх конфігурацію через команду:
cat /etc/systemd/system/назва.service
, або systemctl cat назва.service
Написати свій з прикладів які вже є в системі теж не важко, як приклад:
sudo nano /usr/lib/systemd/system/назва.service
[Unit]
Description= назва вашого сервісу
[Service]
WorkingDirectory=/home/ #Директорія в якій знаходится ваш скрипт може бути інша, це приклад
ExecStart=/usr/bin/python3 /home/script/ваш_скрипт.py #Тут теж директорія як приклад хто запускає ваш скрипт може бути `/usr/bin/bash`
Restart=always #Завжди перезапускати в разі чого(помилки наприклад)
RestartSec=10 #Через скільки секунд перезапускати
SyslogIdentifier=назва-вашого-скипту #Для системного журналу
User=user #Від кого запускати `root` або `ваш_логін_в_системі`
[Install]
WantedBy=multi-user.target
Додаткові опції в посиланні systemd.service