Как мне узнать, почему systemd служба была запущена?

Я пытаюсь выяснить, почему в системе запускается определенная служба, и мне интересно, есть ли команда, указывающая, почему была запущена конкретная служба?

При запросе статуса службы systemctl утверждает, что она отключена, но все же запущена, и я явно не просил ее запустить, AFAICT. Вывод ниже (слегка анонимный)

# systemctl status myservice
● myservice.service - My Service
   Loaded: loaded (/usr/lib/systemd/system/myservice.service; disabled; vendor preset: disabled)
   Active: active (running) since mån 2017-02-27 13:57:15 CET; 30min ago
     Docs: http://www.example.com/
 Main PID: 4680 (ewe)
   CGroup: /system.slice/myservice.service
           ├─4680 /opt/myservice/vbc/bin/myservice
           └─4944 /opt/myservice/vbc/bin/myservice

Я я запускаю службу, которая установила Before = myservice.service в своем файле .service (номер Требуется ), поэтому я подозреваю это, но я не могу сказать наверняка.

Это работает в системе CentOS 7.3.

ИЗМЕНИТЬ: Мне удалось обойти проблему убедившись, что служба, для которой указанная выше служба имеет отношение Requires = , After = и Wants = , и которая запускается временным запуском - когда-то служба, явно останавливается. При этом служба не запускается. Однако я не приблизился к выяснению , почему это вообще было начато.

РЕДАКТИРОВАТЬ: службы, с которыми он связан Требует , перезапускаются. Я не ожидал я полагал, что это будет означать только то, что моя служба запускать другую службу при запуске, не то, чтобы она также запускала мою. Удаление Требует устраняет фантомные перезапуски.

3
задан 4 July 2017 в 14:43
1 ответ

Выполнение sudo systemctl status может помочь, как и systemctl list-dependencies .

Я слышал о сервисах, запускаемых при установке на (как мне кажется) Ubuntu, но никогда на CentOS. Однако ЕСЛИ ваша служба имеет определенную единицу сокета, тогда трафик к данному сокету / порту может вызвать автоматический запуск вашей службы.

У меня есть такая настройка для TFTP, например:

sudo systemctl list-dependencies | grep socket

│ ├─sockets.target
│ │ ├─dbus.socket
<snip>
│ │ └─tftp.socket

Конфигурация для запуска службы при получении трафика UDP / 69:

# /usr/lib/systemd/system/tftp.socket
[Unit]
Description=Tftp Server Activation Socket

[Socket]
ListenDatagram=69

[Install]
WantedBy=sockets.target
3
ответ дан 3 December 2019 в 06:28

Теги

Похожие вопросы