Да, неправда бывает. Монитор exec
выполняет выполнение заданной строки в стиле exec(3)
, а не вызов system(3)
; это означает, что перенаправления синтаксиса оболочки (и тому подобное )не поддерживаются, поскольку предоставленные данные не проходят через оболочку. Вместо этого напишите подходящий код, который использует переменные среды monit (, которые будут экспортированы в код таким образом exec
ed):
# cat /root/blah
#!/bin/sh
echo "$MONIT_EVENT" > /root/woot
# chmod +x /root/blah
#
А затем вызовите этот код из конфигурации monit:
# tail -2 /etc/monitrc
check process itsdeadjim with pidfile "/nopenopenope"
if does not exist then exec "/root/blah"
#
Это заполняет файл /root/woot
для меня:
# rm /root/woot
# rcctl restart monit && sleep 10
monit(ok)
monit(ok)
# cat /root/woot
Does not exist
#
Я обнаружил ту же проблему, и она связана со сборочной машиной: ваши стандартные библиотеки для C и C++ новее, чем те, которые требуются для вашей версии ImageMagick. Обновление версии ImageMagick поможет.
Другим решением может быть использование контейнера или другой машины для его создания.
Надеюсь, эта информация поможет кому-то еще :).