2016-02-02 70 views
0

我想打電話給通過的cronjob一個deamon程序,可以使用通過的cronjob在python

[email protected]:/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()被稱爲

回答

0

如果您api_daemon.py SCRPT取決於從/home/web/path_to_directory一些模塊,您必須首先在目錄添加到路徑或CHDIR到該目錄。

話雖這麼說,你可以嘗試調用命令:

chdir /home/web/path_to_directory && python api/api_daemon.py start 

在crontab文件。這將首先進入您的項目目錄,然後開始您的api_daemon

+0

我也嘗試過使用絕對路徑(請參閱第二種方法) – onkar

+0

對於python,它從調用哪個目錄腳本確實很重要。所以你必須顯式地chdir到腳本才能工作的特定目錄。 – GwynBleidD

+0

嗨GwynBleidD,請你檢查編輯? – onkar