最近測試hbase,老發現服務掛掉,自己不能及時發現,想了想,寫了個腳本,讓腳本每個小時執行一次,以便檢測是否有服務掛掉,如果有服務掛掉,及時啟動
import os import datetime class CheckService(object): def __init__(self): pass def getService(self): # service list service = ['Jps' ,'EmbeddedServer' ,'QuorumPeerMain' ,'NodeManager' ,'ResourceManager' ,'NameNode' ,'SecondaryNameNode' ,'HMaster' ,'HRegionServer' ,'RunJar' ] # Traversal list for i in service: a = "jps | awk '{print $2}'|grep "+i res = os.system(a) # Determine whether the service is running if res != 0 : print "%s is not running!" %(i) if i == 'HMaster': os.system('start-hbase.sh') elif i == 'HRegionServer': os.system('local-regionservers.sh start 1') elif i == 'EmbeddedServer': os.system('ranger-admin start') elif i == 'QuorumPeerMain': os.system('zkServer.sh start') else: print 'restart Hadoop !!!' def timerFun(self,sched_Timer): flag = 0 while True: now = datetime.datetime.now() if now == sched_Timer: self.getService() flag = 1
else: if flag == 1: sched_Timer = sched_Timer + datetime.timedelta(hours=1) flag = 0 if __name__ == "__main__": cs = CheckService() sched_Timer = datetime.datetime(2017,7,25,9,14) print 'run the timer task at {0}'.format(sched_Timer) cs.timerFun(sched_Timer)
這個代碼也可以擴展,把hours=1改成minutes=1就變成了每個小時定時任務,改成days=1就變成每天的定時任務