![systemctl zabbix는 Python scrip에서 sudo 쉘 명령을 호출합니다.](https://linux55.com/image/141157/systemctl%20zabbix%EB%8A%94%20Python%20scrip%EC%97%90%EC%84%9C%20sudo%20%EC%89%98%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%ED%98%B8%EC%B6%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
이틀 전에 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은 쉘 명령의 두 줄을 호출합니다.
- jstat =commands.getoutput("어떤 jstat")
- 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를 추가하려고 시도했습니다.