systemctl zabbixはPython scripでsudoシェルコマンドを呼び出します。

systemctl zabbixはPython scripでsudoシェルコマンドを呼び出します。

2日前、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はシェルコマンドの2行を呼び出します。

  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を追加しようとしました。

関連情報