场景:下面是两个脚本,其中python脚本调用bash脚本。
test.py
import subprocess
p=subprocess.call(['bash','test.sh'])
f = open("demofile2.txt", "a")
f.write(p)
f.close()
test.sh
echo "hello world"
观察:直接执行test.py时可以正常工作。
issue:当我在/ service下创建恶魔来运行文件时。 “ p”(通话返回)的值为-13。
注意:两个脚本的user:group都是root。我正在使用centos8
如果有人遇到相同的问题,答案就在于路径的解析。
当我在命令行中执行python脚本时,它能够找到该脚本。但是,当恶魔工具(甚至systemd)运行脚本时,它无法找到bash脚本。当我在python脚本中提供bash脚本的绝对路径(opt \ test \ test.sh)时,它起作用了。
\ opt \ test \ test.py
import subprocess
p=subprocess.call(['bash','opt\test\test.sh'])
f = open("demofile2.txt", "a")
f.write(p)
f.close()
\ opt \ test \ test.sh
echo "hello world"