在 python 服务中调用子进程
Call subprocess in python service
我有一个奇怪的问题..
我创建了一个 python 脚本 (modbus_sensor.py),它 运行 是一项服务。
Modbus_sensor.py 通过调度程序调用大约 15 个其他 python 脚本。
当我 运行 modbus_sensor.py 喜欢:"python modbus_sensor.py" 它非常有效 并且所有子脚本都是 运行ning。
但是当我像服务一样启动脚本时:"service modbus_daemon start",主脚本启动,但它不调用其他脚本。
def ExecuteReadChange(sScriptName = '', sArg1 = '', sArg2 = ''):
# os.system ('sudo python ' + sScriptName + ' ' + sArg1) #Call every script
# os.system ('sudo /usr/bin/python /usr/local/bin/modbus_sensor/test.py') # returns 256
# subprocess.call('sudo python test.py', shell=True)
# subprocess.call('sudo /usr/bin/python /usr/local/bin/modbus_sensor/test.py', shell=True) # returns 1
我已经尝试了所有方法,例如 with/without 完整路径。
可能是什么问题?
您可能必须在 /etc/sudoers 设置中禁用 requiretty:
使用visudo
命令编辑/etc/sudoers
替换:
Defaults requiretty
与:
Defaults !requiretty
我有一个奇怪的问题.. 我创建了一个 python 脚本 (modbus_sensor.py),它 运行 是一项服务。 Modbus_sensor.py 通过调度程序调用大约 15 个其他 python 脚本。
当我 运行 modbus_sensor.py 喜欢:"python modbus_sensor.py" 它非常有效 并且所有子脚本都是 运行ning。
但是当我像服务一样启动脚本时:"service modbus_daemon start",主脚本启动,但它不调用其他脚本。
def ExecuteReadChange(sScriptName = '', sArg1 = '', sArg2 = ''):
# os.system ('sudo python ' + sScriptName + ' ' + sArg1) #Call every script
# os.system ('sudo /usr/bin/python /usr/local/bin/modbus_sensor/test.py') # returns 256
# subprocess.call('sudo python test.py', shell=True)
# subprocess.call('sudo /usr/bin/python /usr/local/bin/modbus_sensor/test.py', shell=True) # returns 1
我已经尝试了所有方法,例如 with/without 完整路径。
可能是什么问题?
您可能必须在 /etc/sudoers 设置中禁用 requiretty:
使用visudo
命令编辑/etc/sudoers
替换:
Defaults requiretty
与:
Defaults !requiretty