利用Hyperic調(diào)用Python實(shí)現(xiàn)進(jìn)程守護(hù)
更新時(shí)間:2018年01月02日 11:29:40 作者:朱萬(wàn)駿
這篇文章主要為大家詳細(xì)介紹了利用Hyperic調(diào)用Python實(shí)現(xiàn)進(jìn)程守護(hù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
利用Hyperic調(diào)用Python,實(shí)現(xiàn)進(jìn)程守護(hù),供大家參考,具體內(nèi)容如下
調(diào)用操作系統(tǒng)方法獲取進(jìn)程信息,判斷進(jìn)程是否存在,Linux和Windows均支持,區(qū)別在于獲取進(jìn)程信息和啟動(dòng)進(jìn)程的方法不同。
代碼如下:
#!/usr/bin/python #-*- coding:utf-8 -*- """ 名稱:進(jìn)程檢查腳本 作者:wjzhu 時(shí)間:2014-06-30 功能:根據(jù)進(jìn)程名稱,判斷進(jìn)程是否存在,執(zhí)行相應(yīng)操作 參數(shù):p_name:進(jìn)程名稱|p_path:進(jìn)程啟動(dòng)路徑 返回值:0:進(jìn)程存在,正常退出|1:進(jìn)程不存在,執(zhí)行命令后,進(jìn)程存在|2:其他異常情況 update:2014-07-29 啟動(dòng)進(jìn)程前調(diào)用os.chdir()方法,改變當(dāng)前工作目錄,解決部分進(jìn)程啟動(dòng)時(shí)依賴工作目錄問(wèn)題 """ import os import sys #初始化進(jìn)程名稱和命令路徑 #使用參數(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平臺(tái)調(diào)用ps命令/Win平臺(tái)調(diào)用tasklist命令,判斷進(jìn)程是否存在,傳入進(jìn)程名稱,返回為查詢得到的進(jìn)程個(gè)數(shù) def process_exit(process_name): #Linux p_checkresp = os.popen('ps aux | grep "' + process_name + '" | grep -v grep').readlines() #Windows,為避免進(jìn)程名稱被截?cái)?,輸出格式為csv,使用tasklist /fo csv #p_checkresp = os.popen('tasklist /fo csv | find "' + process_name + '"').readlines() return len(p_checkresp) #Linx平臺(tái)調(diào)用os.system方法啟動(dòng)命令/Win平臺(tái)調(diào)用os.startfile方法啟動(dòng)命令,傳入命令路徑,無(wú)返回值 def process_exec(process_path): #將工作目錄切換到啟動(dòng)腳本所在目錄,解決部分進(jìn)程啟動(dòng)時(shí)依賴工作目錄問(wèn)題 os.chdir(os.path.dirname(process_path)) #Linxu os.system(process_path) #Windows #os.startfile(process_path) #主函數(shù) if __name__ == '__main__': #查詢進(jìn)程個(gè)數(shù)大于1,返回0,不做任何操作,退出 if process_exit(p_name) >= 1: print 0 sys.exit(0) #查詢進(jìn)程個(gè)數(shù)等于0 elif process_exit(p_name) == 0: #執(zhí)行啟動(dòng)命令 process_exec(p_path) #查詢進(jìn)程個(gè)數(shù)大于1,返回1,啟動(dòng)成功,退出 if process_exit(p_name) >= 1: print 1 sys.exit(0) #啟動(dòng)失敗,返回2,退出 else: print 2 sys.exit(0) #其他問(wèn)題,返回2,退出 else: print 2 sys.exit(0)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Python多進(jìn)程并發(fā)(multiprocessing)用法實(shí)例詳解
- 使用python 獲取進(jìn)程pid號(hào)的方法
- 使用Python的Supervisor進(jìn)行進(jìn)程監(jiān)控以及自動(dòng)啟動(dòng)
- python進(jìn)程類subprocess的一些操作方法例子
- 淺析Python中的多進(jìn)程與多線程的使用
- Python multiprocessing.Manager介紹和實(shí)例(進(jìn)程間共享數(shù)據(jù))
- Python多進(jìn)程通信Queue、Pipe、Value、Array實(shí)例
- python開啟多個(gè)子進(jìn)程并行運(yùn)行的方法
- python關(guān)閉windows進(jìn)程的方法
- python 判斷一個(gè)進(jìn)程是否存在
相關(guān)文章
使用Python判斷質(zhì)數(shù)(素?cái)?shù))的簡(jiǎn)單方法講解
這篇文章主要介紹了使用Python判斷質(zhì)數(shù)(素?cái)?shù))的簡(jiǎn)單方法講解,經(jīng)常被用來(lái)做科學(xué)計(jì)算的Python處理這種小問(wèn)題當(dāng)然手到擒來(lái)^_-需要的朋友可以參考下2016-05-05Python Pexpect庫(kù)的簡(jiǎn)單使用方法
這篇文章主要介紹了Python Pexpect庫(kù)的簡(jiǎn)單使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01