systemd запускает процесс через scl, мой процесс не получает SIGTERM

У меня есть системный сервис под названием sitesdb-job-runner.service со следующим конфигом:

[Unit]
Description=SitesDB Background Job Runner
After=network.target mariadb.service

[Service]
Type=simple
Restart=always
User=sitesdb
ExecStart=/bin/scl enable rh-git29 rh-php71 "/var/www/sitesdb/current/bin/console --env=prod jms-job-queue:run -v"

[Install]
WantedBy=multi-user.target

Когда я бегу systemctl stop sitesdb-job-runner, SIGTERM не отправляется в мой процесс. Я знаю это, потому что процесс регистрирует, когда он получает SIGTERM, чтобы он мог корректно завершить работу.

После некоторого расследования я подозреваю, что это связано с scl Обертка, которую я использую, чтобы фактически выполнить скрипт. Когда я бегу /bin/scl enable rh-git29 rh-php71 "/var/www/sitesdb/current/bin/console --env=prod jms-job-queue:run -v" непосредственно я получаю три этих процесса:

(1) /bin/scl enable rh-git29 rh-php71 /var/www/sitesdb/current/bin/console --env=prod jms-job-queue:run
(2) /bin/bash /var/tmp/sclSdT0wu
(3) php /var/www/sitesdb/current/bin/console --env=prod jms-job-queue:run -v

Если я вручную нацелюсь на PID третьего процесса (мою фактическую команду) и отправлю ему SIGTERM, он будет работать как положено. Но когда я отправил SIGTERM в родительский процесс, мой процесс не получает SIGTERM.

Мое понимание поведения systemd по умолчанию состоит в том, что он отправляет SIGTERM всем процессам и дочерним процессам, но я предполагаю, что здесь происходит что-то еще.

Есть идеи?

0 ответов

Другие вопросы по тегам