systemctl zabbix 在 python scrip 中调用 sudo shell 命令

systemctl zabbix 在 python scrip 中调用 sudo shell 命令

两天前,我将zabbix-agent的运行从zabbix_agentd直接运行更改为systemctl start zabbix-agent。有一个奇怪的事情。我编写了一个python脚本来监视java GC状态,它调用“sudo”。

命令 jstat 与 jdk env 一起安装在 /etc/profile 中的 $PATH 设置中((/xxx/xxx/bin/jstat,not in /usr/local/sbin:/usr/local/bin:/usr/sbin:/ usr/bin)) python 调用 shell 命令的两行

  1. jstat =commands.getoutput("哪个 jstat")
  2. subprocess.Popen(['sudo',jstat, opts, self.pdict['pid']], stdout=subprocess.PIPE)

直接使用 zabbix_agentd 时。 Commands.getoutput("which jstat") 可以给出语句 2 的绝对路径的值。但是,当使用 Supervisor 运行 zabbix 代理时,它无法识别。which 给出输出 在此输入图像描述

是什么导致直接运行进程和 systemctl 之间存在这种差异?

答案1

我还尝试将 jstat 添加到 /usr/bin ,这是可以的,因为使用 sudo 时,它在 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 中找到该命令。

相关内容