Я пытаюсь понять, почему в системе запускается определенная служба, и мне интересно, есть ли команда, чтобы сказать, почему была запущена определенная служба?
При запросе статуса службы 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
файл (нет Requires
), поэтому я подозреваю это, но не могу сказать наверняка.
Это работает в системе CentOS 7.3.
ИЗМЕНЕНО: Мне удалось обойти эту проблему, убедившись, что услуга, указанная выше, имеет Requires=
, After=
и Wants=
отношение к, которое запускается временной службой однократного выполнения, явно останавливается. При этом служба не запускается. Я не приблизился к выяснению Зачем однако это было начато в первую очередь.
ИЗМЕНЕНО: Похоже, мой служебный файл началось всякий раз, когда одна из служб имеет Requires
отношение к перезапущено. Я не ожидал, что это произойдет, я предположил, что это будет означать только то, что моя служба запустит другую службу при запуске, а не то, что она также запустит мою. Удаление Requires
исправляет фантомные перезапуски.
Бег 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