crond 執行 popen()時沒有結果問題分析

2020-08-13 12:36:12

問題:

linux環境中使用crond 執行python指令碼,指令碼中使用 執行

tp = subprocess.Popen('ip route show' , stdout = subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

tp.stdout.readlines() 內容爲空,無返回結果

列印 tp.stderr.readlines()  內容後,發現 報錯資訊:

ip_route_rst_err: "['/bin/sh: ip: command not found\n']"


解決方法:

使用 whereis ip 找到ip的安裝路徑(如:ubuntu  ip命令路徑:/bin/ip 和 /sbin/ip; centos ip命令路徑:/usr/sbin/ip)

subprocess.Popen('/usr/sbin/ip route show' , stdout = subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

再執行定時任務時,程式執行正常