利用Hyperic調(diào)用Python,實現(xiàn)進程守護,供大家參考,具體內(nèi)容如下
調(diào)用操作系統(tǒng)方法獲取進程信息,判斷進程是否存在,Linux和Windows均支持,區(qū)別在于獲取進程信息和啟動進程的方法不同。
代碼如下:
#!/usr/bin/python #-*- coding:utf-8 -*- """ 名稱:進程檢查腳本 作者:wjzhu 時間:2014-06-30 功能:根據(jù)進程名稱,判斷進程是否存在,執(zhí)行相應(yīng)操作 參數(shù):p_name:進程名稱|p_path:進程啟動路徑 返回值:0:進程存在,正常退出|1:進程不存在,執(zhí)行命令后,進程存在|2:其他異常情況 update:2014-07-29 啟動進程前調(diào)用os.chdir()方法,改變當(dāng)前工作目錄,解決部分進程啟動時依賴工作目錄問題 """ import os import sys #初始化進程名稱和命令路徑 #使用參數(shù)方式傳遞程序名稱和程序路徑 #p_name = sys.argv[1] #p_path = sys.argv[2] #Linux p_name = "redis" p_path = "/usr/local/redis-2.8.11/src/redis-server/usr/local/redis-2.8.11/redis.conf" #Windows #p_name = "filezilla.exe" #p_path = "C:\\Program Files (x86)\\FileZilla FTP Client\\filezilla.exe" #Linux平臺調(diào)用ps命令/Win平臺調(diào)用tasklist命令,判斷進程是否存在,傳入進程名稱,返回為查詢得到的進程個數(shù) def process_exit(process_name): #Linux p_checkresp = os.popen('ps aux | grep "' + process_name + '" | grep -v grep').readlines() #Windows,為避免進程名稱被截斷,輸出格式為csv,使用tasklist /fo csv #p_checkresp = os.popen('tasklist /fo csv | find "' + process_name + '"').readlines() return len(p_checkresp) #Linx平臺調(diào)用os.system方法啟動命令/Win平臺調(diào)用os.startfile方法啟動命令,傳入命令路徑,無返回值 def process_exec(process_path): #將工作目錄切換到啟動腳本所在目錄,解決部分進程啟動時依賴工作目錄問題 os.chdir(os.path.dirname(process_path)) #Linxu os.system(process_path) #Windows #os.startfile(process_path) #主函數(shù) if __name__ == '__main__': #查詢進程個數(shù)大于1,返回0,不做任何操作,退出 if process_exit(p_name) >= 1: print 0 sys.exit(0) #查詢進程個數(shù)等于0 elif process_exit(p_name) == 0: #執(zhí)行啟動命令 process_exec(p_path) #查詢進程個數(shù)大于1,返回1,啟動成功,退出 if process_exit(p_name) >= 1: print 1 sys.exit(0) #啟動失敗,返回2,退出 else: print 2 sys.exit(0) #其他問題,返回2,退出 else: print 2 sys.exit(0)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。