Я пытаюсь выяснить, почему в системе запускается определенная служба, и мне интересно, есть ли команда, указывающая, почему была запущена конкретная служба?
При запросе статуса службы 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 =
, и которая запускается временным запуском - когда-то служба, явно останавливается. При этом служба не запускается. Однако я не приблизился к выяснению , почему это вообще было начато.
РЕДАКТИРОВАТЬ:
службы, с которыми он связан Требует
, перезапускаются. Я не ожидал
я полагал, что это будет означать только то, что моя служба
запускать другую службу при запуске, не то, чтобы она также запускала мою.
Удаление Требует
устраняет фантомные перезапуски.
Выполнение 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