systemd
26 commands
26 shown
Включить и запустить сервис
Включить автозапуск и запустить немедленно одной командой
systemctl enable --now myapp.service
Упавшие юниты
Список всех юнитов в состоянии failed
systemctl list-units --state=failed
Перечитать unit-файл после изменения
Перечитать определения юнитов и перезапустить сервис
systemctl daemon-reload && systemctl restart myapp.service
Переопределить unit через drop-in
Создать drop-in файл с частичными переопределениями
systemctl edit myapp.service
Содержимое unit-файла
Вывести полный unit-файл включая drop-in файлы
systemctl cat myapp.service
Анализ времени загрузки
Топ 20 юнитов по времени инициализации
systemd-analyze blame | head -20
Граф зависимостей загрузки
Граф зависимостей загрузки в формате SVG
systemd-analyze dot --require | dot -Tsvg > boot.svg && open boot.svg
Создать простой unit-файл
Минимальный шаблон systemd service unit
cat > /etc/systemd/system/myapp.service <<EOF
[Unit]
Description=My App
After=network.target
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5
User=appuser
[Install]
WantedBy=multi-user.target
EOF
Разовый запуск от другого пользователя
Запустить временный one-shot юнит от конкретного пользователя
systemd-run --uid=1000 --gid=1000 --wait /usr/bin/myapp --task
Создать systemd таймер
Замена cron с Persistent=true для пропущенных запусков
cat > /etc/systemd/system/backup.timer <<EOF
[Unit]
Description=Daily backup
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
EOF
Лимит памяти для сервиса
Применить cgroup лимиты без редактирования unit-файла
systemctl set-property myapp.service MemoryMax=512M CPUQuota=50%
Использование ресурсов сервисом
Текущие память, CPU и потоки из cgroup
systemctl status myapp.service | grep -E 'Memory:|CPU:|Tasks:'
Список socket юнитов
Все socket-активируемые юниты и их состояние
systemctl list-units --type=socket --all
Замаскировать сервис
Полностью запретить запуск сервиса любыми средствами
systemctl mask snapd.service
Переменные среды сервиса
Переменные среды переданные в сервис
systemctl show myapp.service -p Environment
Критическая цепочка загрузки
Показывает последовательную цепочку зависимостей, реально задерживающую загрузку; честнее, чем blame
systemd-analyze critical-chain <unit>
Диаграмма загрузки SVG
Генерирует полную параллельную диаграмму загрузки в SVG, чтобы визуально найти последовательные задержки
systemd-analyze plot > boot.svg
Drop-in переопределение
Правка юнита через drop-in без изменения файла поставщика; --full форкает весь юнит целиком
systemctl edit <unit> # writes /etc/systemd/system/<unit>.d/override.conf
Перечитать файлы юнитов
Перечитывает файлы юнитов после правки; учтите: обязателен после ручных изменений, иначе systemctl предупредит об устаревшем конфиге
systemctl daemon-reload
Маскировать юнит
mask связывает юнит с /dev/null, чтобы он не запускался даже как зависимость; жёстче, чем disable
systemctl mask <unit> && systemctl unmask <unit>
Дерево зависимостей
Обход полного дерева Wants/Requires для отладки тянущихся зависимостей; --reverse покажет, кому нужен юнит
systemctl list-dependencies <unit> --all
Память юнита в реальном времени
Читает живые метрики cgroup прямо из systemd без ps; MemoryCurrent — учтённый RSS процесса
systemctl show -p MainPID,MemoryCurrent,TasksCurrent <unit>
Сбросить состояние failed
Сбрасывает счётчики сбоев, чтобы юниты перезапустились после StartLimitBurst, затем показывает оставшиеся failed
systemctl reset-failed && systemctl list-units --state=failed
Временный одноразовый таймер
Создаёт одноразовую пару таймер+сервис без написания файлов юнитов; удобно для разовых задач по расписанию
systemd-run --on-calendar='*-*-* 03:00:00' --unit=backup /usr/local/bin/backup.sh
Лимит ресурсов на лету
Применяет лимиты cgroup на лету без перезапуска; --runtime делает их временными (исчезают после перезагрузки)
systemctl set-property --runtime <unit> MemoryMax=512M CPUQuota=50%
Очередь активных задач
Показывает выполняющиеся задачи start/stop для диагностики зависшей загрузки или застрявшего юнита
systemctl list-jobs
no commands match