https://linux-notes.org/pishem-systemd-unit-fajl/

После загрузки кернел запускает  /sbin/init АКА systemd
       /sbin/init -> ../usr/lib/systemd/systemd
systemd загружает описание сервисов, таргетов и т.д. из unit-файлов в каталогах
     /etc/systemd/system/ и  /usr/lib/systemd/system/
     target == список/комплект желаемых севисов
и запускает все, что определяется таргетом default.target
Обычно default.target -> /usr/lib/systemd/system/graphical.target
multi-user.target == соответствует многопользовательскому режиму без графики
graphical.target  == multi-user.target + display-manager.service

# Сменить дефолтный таргет на постоянку:
systemctl set-default multi-user.target    # загружаться в текстовый login
systemctl set-default graphical.target     # загружаться в графический login

Чтоб при загрузке разово попасть в альтернативный (не дефолтный таргет)
в строку начальной загрузки добавить что-то типа:
    systemd.unit=multi-user.target


systemctl  status  serv-name        # Статус сервиса
systemctl  show    serv-name        # Полное описание сервиса
journalctl -u serv-cename -f        # Логи   сервиса

systemctl  start   serv-name        # Старт / стоп
systemctl  stop    serv-name
systemctl  enable  serv-name        # Поставить на автостарт при загрузке
systemctl  disable serv-name
systemctl  cat     serv-name        # Посмотреть unit-файл сервиса

systemctl  daemon-reload        # Перечитать конфиги и unit'ы если они менялись


# /etc/systemd/system/squid_proxy.service [Unit] Description=SSH Port Forwarding to 110:1110, 3128:3128 from 2022:22 After=network.target squid [Service] User=ivanov # Переменные окружения можно задать Environment= или всосать из файла Environment=APP_USER=ivanov EnvironmentFile=/home/ivanov/service.conf ExecStart=/home/${APP_USER}/bin/squid_proxy host.ru ExecStop=/home/${APP_USER}/bin/squid_proxy --stop %H %n ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=15 [Install] WantedBy=multi-user.target #############################################################
systemd.unit(5) systemd.service(5) After,Before последовательность запуска при _одновременном_ старте Wanted= попытается запустить желаемое, если не получится - не страшно Requires= запустит желаемое, если не получится - отменит свой запуск В секции [Install] # При enable сервис залинкуют в multy-user.target.wants WantedBy=multy-user.target Restart= no|on-success|on-failure|on-abnormal|on-watchdog|on-abort|always RestartSec=15 Список поиска unit-файлов (на сам деле он гораздо длиннее) /etc/systemd/system/ /usr/lib/systemd/system/ %H %l Hostname и ShortHostname %n %N Full Unit Name и unit-name без суффикса $MAINPID PID сервиса; используется в ExecStop= ExecReload= $SERVICE_RESULT Результат завершения сервиса; особенно полезен в ExecStopPost= $EXIT_CODE Способ завершения процесса: code, signal или пусто $EXIT_STATUS Код выхода или номер сигнала systemd-path search-binaries-default # посмотреть путь поиска для ExecStart ExecSearchPath=/opt/my-app/bin:/usr/local/bin # задать свой путь поиска Обычно они лежат в /usr/lib/systemd/system/ и могут обновляться при апдейтах. # systemctl cat sluzhba.service 1. Копируем unit в /etc/systemd/system и редактируем как нам угодно # systemctl cat sluzhba.service > /etc/systemd/system/sluzhba.service # vi /etc/systemd/system/sluzhba.service либо воспользовавшись командой # systemctl edit --full myapp.service 2. Создаем "drop-in" директорию сервиса и кладем в нее файлы.conf с поправками # mkdir /etc/systemd/system/sluzhba.service.d
Пример /etc/systemd/system/sluzhba.service.d/050add.conf [Unit] # директивы будут добавлены к оригинальному unit-файлу After=memcached.service Requires=memcached.service # Чтоб не добавить а заменить, сперва обнуляем директиву AssertPathExists= AssertPathExists=/srv/www [Service] PrivateTmp=yes
либо командой edit все незакомментированные строки попадут drop-in # systemctl edit myapp.service

Популярность: 14, Last-modified: Thu, 03 Sep 2026 06:58:14 GmT