1

I need to check a program that has a systemd unit under user namespace and this is my monit conf (systemd conf works without any problem):

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

Any idea why as uid does not work?

2
  • have you ever been able to figure it out? @Pioz Commented May 23, 2021 at 11:29
  • Could you be running into an issue where monit executes programs with very few environment variables and so no DBUS info is present whereas using su causes an environment to be setup? May be able to debug using the monit FAQ. Commented May 18, 2022 at 1:42

0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.