Monit is a free open source utility for managing and monitoring, processes, files, directories and filesystems on a UNIX system. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations. (unofficial mirror)
I need to check a program that has a systemd unit under user namespace and this is my monit conf:
check program foo with path "/usr/bin/systemctl --user -q is-active foo" as uid pioz and gid pioz
start program = "/usr/bin/systemctl --user start foo" as uid pioz and gid pioz
stop program = "/usr/bin/systemctl --user stop foo" as uid pioz and gid pioz
if status != 0 then restart
if 5 restarts within 5 cycles then timeout
This conf does not work because I get the error Failed to connect to bus: No such file or directory. I get the same error if I run the follow command sudo /usr/bin/systemctl --user -q is-active foo, so seems that the directive as uid pioz and gid pioz does not work. If I change the config like this, all works well.
check program foo with path "/bin/su -c '/usr/bin/systemctl --user -q is-active foo' pioz"
start program = "/bin/su -c '/usr/bin/systemctl --user start foo' pioz"
stop program = "/bin/su -c '/usr/bin/systemctl --user stop foo' pioz"
if status != 0 then restart
if 5 restarts within 5 cycles then timeout
I need to check a program that has a systemd unit under user namespace and this is my monit conf:
This conf does not work because I get the error
Failed to connect to bus: No such file or directory
. I get the same error if I run the follow commandsudo /usr/bin/systemctl --user -q is-active foo
, so seems that the directiveas uid pioz and gid pioz
does not work. If I change the config like this, all works well.Any idea why
as uid
does not work?