Самому то же писать лень, нашёл похожие материалы на разных сайтах, ссылки на них ниже.
Шпаргалка по systemd (systemctl)
Как запустить сервисы Systemd без пользователя root / sudo
Шпаргалка по systemd (systemctl)
Запуск/остановка/включение/отключение сервиса:
systemctl start sshd
systemctl stop sshd
systemctl enable sshd
systemctl disable sshd
Статус сервиса и список сервисов
systemctl list-unit-files
systemctl list-units
systemctl status sshd
journalctl -xe
Как изменить скрипты запуска systemd
Основные каталоги, где хранятся юниты:
/usr/lib/systemd — тут хранятся юнит-файлы, которые установлены из пакетов
/etc/systemd — сдесь ссылки на вышеуказанные юнит-файлы, а так-же юнит-файлы, кторые создает пользователь.
Свои юнит-файлы следует класть в папку /etc/systemd/system
Если нам не нравится юнит-файл, который был поставлен из пакета, его можно изменить двумя способами:
полное owerride:
Копируем юнит-файл из /usr/lib/systemd/system в /etc/systemd/system и правим как хотим. Файл в /etc/systemd/system полностью заменяет (т.е. он главнее), файл в /usr/lib/systemd/system. Миннус — при апгрейде новый юнит файл, который из пакета не будет применен, а там могут оказаться важные опции без которых новая версия не стартует.
частичное owerride:
Cоздаем папку /etc/systemd/system/<имя_юнита>.service.d/ в этой папке делаем файл override.conf, в котором указываем только те опции, которые хотим изменить.
Тут есть нюансы!
В файле override.conf кроме самих опций нужно указать имя раздела
Для опций, которые могут быть объявлены много раз (ExecStart, After, Environment), нужно сперва очистить содержимое.
Пример override.conf для юнита sshd, если мы хотим включить режим debug:
[service]
ExecStart=
ExecStart=/usr/sbin/sshd -d -D $OPTIONS
После внесения изменений нужно их загрузить командой:
systemctl daemon-reload
Отобразить содержимое юнита:
systemctl cat sshd
Изменить содержимое юнита можно так-же командой:
systemctl edit sshd
команда откроет файл override.conf в редакторе vi
Как создать скрипт запуска systemd
Пример юнит-файла /etc/systemd/system/rclocal.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
[Service]
Type=simple
ExecStart=/etc/rc.local
Restart=always
StandardOutput=journal
# WorkingDirectory=/tmp
# Environment=TERM=LD_LIBRARY_PATH="/usr/local/lib"
[Install]
WantedBy=multi-user.target
Как запустить сервисы Systemd без пользователя root / sudo
В качестве примера — синхронизатор syncthing.
mkdir -p ~/.config/systemd/user/
vim ~/.config/systemd/user/syncthing.service
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)
[Service]
ExecStart=/usr/local/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
# Hardening
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true
[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user list-unit-files syncthing.service
systemctl --user enable --now syncthing.service
systemctl --user enable syncthing.service
systemctl --user status syncthing.service
Leave a Reply
You must be logged in to post a comment.