История изменений
Исправление sunny1983, (текущая версия) :
Отдельный юнит, значит... ну хорошо
Давай, полностью задачу изложу.
Есть процесс, который запускается из systemd-юнита, также он создаёт pid-файл. Однако этот процесс порождает дочерний процесс, который не создаёт pid-файл, но этот процесс надо мониторить. Я создал скрипт, который вычисляет pid этого процесса и создаёт pid-файл, pid-файл нужен для сервера статистики, который каждые 5 минут подключается к нашему серверу и собирает метрики процесса. Скрипт такой:
#!/bin/bash
/bin/ps -eo pid,cmd | /usr/bin/awk '$2=="flussonic-thumbnailer" {print $1}' > /run/flussonic/flussonic-thumbnailer.pid
[Unit]
BindsTo=flussonic.service
After=flussonic.service
[Service]
Type=oneshot
ExecStart=/opt/scripts/flussonic-thumbnailer-getpid.sh
ExecStop=/bin/rm /run/flussonic/flussonic-thumbnailer.pid
[Install]
WantedBy=multi-user.target
В итоге что мы имеем:
скрипт через юнит запускается, но ничего не делает
сам скрипт рабочий, запускал из командной строки - pid-файл создаётся
скрипт действительно запускается, я для проверки в него добавлял строку «echo AAAA», в journalctl пишет
почему-то не срабатывает как раз правая часть однострочника, где вывод через «>»
Исправление sunny1983, :
Давай, полностью задачу изложу.
Есть процесс, который запускается из systemd-юнита, также он создаёт pid-файл. Однако этот процесс порождает дочерний процесс, который не создаёт pid-файл, но этот процесс надо мониторить. Я создал скрипт, который вычисляет pid этого процесса и создаёт pid-файл, pid-файл нужен для сервера статистики, который каждые 5 минут подключается к нашему серверу и собирает метрики процесса. Скрипт такой:
#!/bin/bash
/bin/ps -eo pid,cmd | /usr/bin/awk '$2=="flussonic-thumbnailer" {print $1}' > /run/flussonic/flussonic-thumbnailer.pid
[Unit]
BindsTo=flussonic.service
After=flussonic.service
[Service]
Type=oneshot
ExecStart=/opt/scripts/flussonic-thumbnailer-getpid.sh
ExecStop=/bin/rm /run/flussonic/flussonic-thumbnailer.pid
[Install]
WantedBy=multi-user.target
В итоге что мы имеем:
скрипт через юнит запускается, но ничего не делает
сам скрипт рабочий, запускал из командной строки - pid-файл создаётся
скрипт действительно запускается, я для проверки в него добавлял строку «echo AAAA», в journalctl пишет
почему-то не срабатывает как раз правая часть однострочника, где вывод через «>»
Исходная версия sunny1983, :
Давай, полностью задачу изложу.
Есть процесс, который запускается из systemd-юнита, также он создаёт pid-файл. Однако этот процесс порождает дочерний процесс, который не создаёт pid-файл, но этот процесс надо мониторить. Я создал скрипт, который вычисляет pid этого процесса и создаёт pid-файл, pid-файл нужен для сервера статистики, который каждые 5 минут подключается к нашему серверу и собирает метрики процесса. Скрипт такой:
#!/bin/bash
/bin/ps -eo pid,cmd | /usr/bin/awk '$2=="flussonic-thumbnailer" {print $1}' > /run/flussonic/flussonic-thumbnailer.pid
[Unit]
BindsTo=flussonic.service
After=flussonic.service
[Service]
Type=oneshot
ExecStart=/opt/scripts/flussonic-thumbnailer-getpid.sh
ExecStop=/bin/rm /run/flussonic/flussonic-thumbnailer.pid
[Install]
WantedBy=multi-user.target
В итоге что мы имеем:
скрипт через юнит запускается, но ничего не делает
сам скрипт рабочий, запускал из командной строки - pid-файл создаёт
скрипт действительно запускается, я для проверки в него добавлял строку «echo AAAA», в journalctl пишет
почему-то не срабатывает как раз правая часть однострочника, где вывод через «>»