systemctl zabbix는 Python scrip에서 sudo 쉘 명령을 호출합니다.

systemctl zabbix는 Python scrip에서 sudo 쉘 명령을 호출합니다.

이틀 전에 zabbix-agent 실행을 zabbix_agentd 직접 실행에서 systemctl start zabbix-agent로 변경했습니다. 이상한 점이 있습니다. "sudo"를 호출하는 Java GC 상태를 모니터링하기 위해 Python 스크립트를 작성했습니다.

jstat 명령은 /etc/profile((/xxx/xxx/bin/jstat, /usr/local/sbin:/usr/local/bin:/usr/sbin이 아님)의 $PATH 설정에서 jdk env와 함께 설치됩니다. : /usr/bin)) Python은 쉘 명령의 두 줄을 호출합니다.

  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 에이전트를 실행하면 인식되지 않습니다. 이는 출력을 제공합니다 여기에 이미지 설명을 입력하세요.

프로세스를 직접 실행하는 것과 systemctl을 실행하는 것 사이에 이러한 차이가 발생하는 이유는 무엇입니까?

답변1

나는 또한 sudo를 사용할 때 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin Order에서 그것을 발견하기 때문에 /usr/bin에 jstat를 추가하려고 시도했습니다.

관련 정보