我正在尝试通过cronjob调用一个deamon进程,可以使用以下命令调用
root@ip:/home/web/path_to_directory# python api/api_daemon.py start
我尝试了以下方法
import os
os.system("/usr/bin/python /home/web/path_to_directory/api/api_daemon.py start")
import os
os.system("python /home/web/path_to_directory/api/api_daemon.py start")
import os
os.system("python api/api_daemon.py start")#works on shell and when triggered manually
编辑 1基本上,我正在使用cron作业来检查进程是否正在运行,如果进程未运行,则只会调用进程。
def process_check():
process_list = ['api_daemon.py']
for process in process_list:
processname = 'python api/'+process+' start'
#print processname
tmp = os.popen("ps -Af").read()
proccount = tmp.count(processname)
message1 = 'processes running of %s' % (processname)
print proccount
#proccount = -2
if not proccount > 0 :
logging.info('status file stopped')
send_msg(process) # to notify process has been restarted
run_process()
def run_process():
import os
os.system("chdir /home/web/path_to_directory && python api/api_daemon.py start")
通过 cronjob process_check()
被调用
如果你的api_daemon.py
scrpt 依赖于 /home/web/path_to_directory
中的某个模块,你必须首先将该目录添加到 path 或 chdir 添加到该目录。
话虽如此,您可以尝试调用命令:
chdir /home/web/path_to_directory && python api/api_daemon.py start
在您的 crontab 文件中。这将首先转到项目的目录,然后启动api_daemon
。