os:linux:systemd
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
os:linux:systemd [16.09.2024 13:47] – [Зависимость между юнитами и порядок запуска] viacheslav | os:linux:systemd [23.03.2025 08:36] (текущий) – [Таймер для периодического запуска] viacheslav | ||
---|---|---|---|
Строка 3: | Строка 3: | ||
[[https:// | [[https:// | ||
[[https:// | [[https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | {{ : | ||
+ | [[https:// | ||
===== Unit-файл ===== | ===== Unit-файл ===== | ||
https:// | https:// | ||
Строка 11: | Строка 15: | ||
Пример unit-файла: | Пример unit-файла: | ||
- | <file bash / | + | <file bash / |
[Unit] | [Unit] | ||
- | Description=Regular background program processing | + | Description=OpenSSH server |
- | Documentation=man: | + | Documentation=man: |
- | After=remote-fs.target | + | # After - запускать после network.target |
+ | After=network.target | ||
+ | # Wants - слабая зависимость: | ||
+ | Wants=sshd-keygen.service | ||
[Service] | [Service] | ||
- | EnvironmentFile=-/etc/default/cron | + | EnvironmentFile=/ |
- | ExecStart=/ | + | ExecStart=/ |
- | IgnoreSIGPIPE=false | + | ExecReload=/bin/kill -HUP $MAINPID # Строка для reload |
- | KillMode=process | + | KillMode=process |
- | Restart=on-failure | + | Restart=on-failure |
+ | RestartSec=42s # Через сколько перезапускать | ||
[Install] | [Install] | ||
- | WantedBy=multi-user.target | + | WantedBy=multi-user.target |
</ | </ | ||
+ | https:// | ||
<code bash> | <code bash> | ||
Строка 87: | Строка 96: | ||
Используется для связи и группировки других юнитов вместе, | Используется для связи и группировки других юнитов вместе, | ||
+ | В примере нет выполняемой команды, | ||
+ | <file ini multi-user.target> | ||
+ | [Unit] | ||
+ | Description=Multi-User System | ||
+ | Documentation=man: | ||
+ | Requires=basic.target | ||
+ | Conflicts=rescue.service rescue.target | ||
+ | After=basic.target rescue.service rescue.target | ||
+ | AllowIsolate=yes | ||
+ | </ | ||
+ | |||
+ | * '' | ||
+ | * Если '' | ||
+ | * Если '' | ||
+ | |||
+ | '' | ||
+ | Таргет может иметь каталог '' | ||
===== systemd-resolve ===== | ===== systemd-resolve ===== | ||
Если в ''/ | Если в ''/ | ||
Строка 159: | Строка 185: | ||
https:// | https:// | ||
- | ===== Таймер для периодического запуска ===== | + | Псевдосервис и получение его статуса |
+ | <code bash> | ||
+ | systemd-run --user --unit=camunda sleep infinity | ||
+ | Running as unit: camunda.service | ||
+ | |||
+ | systemctl --user is-active camunda.service | ||
+ | active # or inactive | ||
+ | </ | ||
+ | ===== systemd.timer | ||
Сервис типа oneshot, запускающий скрипт | Сервис типа oneshot, запускающий скрипт | ||
<code ini> | <code ini> | ||
Строка 192: | Строка 227: | ||
https:// | https:// | ||
https:// | https:// | ||
+ | |||
+ | Для работы нужно 3 компонента: | ||
+ | Скрипт после создания нужно сделать исполняемым - '' | ||
+ | |||
+ | <code bash> | ||
+ | vi / | ||
+ | # Абсолютный минимум для сервиса: | ||
+ | [Service] | ||
+ | ExecStart=/ | ||
+ | |||
+ | # Вариант создания | ||
+ | systemctl edit --force --full test.service | ||
+ | # Вариант редактирования | ||
+ | systemctl edit --full test.service | ||
+ | |||
+ | # Перечитать список сервисов (если редактировалось/ | ||
+ | sudo systemctl daemon-reload | ||
+ | # Можно запускать | ||
+ | systemctl start test.service | ||
+ | |||
+ | # Логи сервиса test в реальном времени | ||
+ | sudo journalctl -u test -f | ||
+ | </ | ||
+ | |||
+ | Другие секции конфигурации сервиса | ||
+ | <code bash> | ||
+ | [Unit] | ||
+ | Description=This service runs the script / | ||
+ | |||
+ | [Service] | ||
+ | ExecStart=/ | ||
+ | User=worker # от имени кого будет работать | ||
+ | |||
+ | # Если служба запускается по таймеру, | ||
+ | #[Install] | ||
+ | # | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | Таймер | ||
+ | <code bash> | ||
+ | # Кладётся в ту же папку, что и сервис | ||
+ | vi / | ||
+ | |||
+ | [Unit] | ||
+ | Description=This timer starts test.service | ||
+ | |||
+ | [Timer] | ||
+ | Unit=test.service | ||
+ | # [DayOfWeek] Year-Month-Day Hour: | ||
+ | OnCalendar=*-*-* 20:15:00 | ||
+ | Persistent=true # Если срабатывание пропущено, | ||
+ | # | ||
+ | |||
+ | # Секция нужна для того, чтобы таймер можно было бы включить при загрузке системы | ||
+ | [Install] | ||
+ | WantedBy=timers.target | ||
+ | |||
+ | # Перечитать сервисы | ||
+ | sudo systemctl daemon-reload | ||
+ | # Включить таймер при загрузке системы | ||
+ | sudo systemctl enable test.timer | ||
+ | |||
+ | # Список таймеров | ||
+ | systemctl list-timers | ||
+ | </ | ||
+ | [[https:// | ||
+ | [[https:// | ||
+ | [[https:// |
os/linux/systemd.1726494476.txt.gz · Последнее изменение: 16.09.2024 13:47 — viacheslav