<em id="pn7p8"><acronym id="pn7p8"><u id="pn7p8"></u></acronym></em>

    <th id="pn7p8"></th>

    <button id="pn7p8"></button>

      <dd id="pn7p8"></dd>
      <progress id="pn7p8"><track id="pn7p8"></track></progress>

      Linux培訓
      達內IT學院

      400-111-8989

      python守護進程監控hive server

      • 發布:Linux培訓
      • 來源:網絡
      • 時間:2015-07-09 10:45

          #!/usr/bin/env python  
            
          import sys, os, time, atexit, string  
          from signal import SIGTERM  
            
          class Daemon:  
              def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):  
                  self.stdin = stdin  
                  self.stdout = stdout  
                  self.stderr = stderr  
                  self.pidfile = pidfile  
            
              def _daemonize(self):  
                  try:  
                      pid = os.fork()  
                      if pid > 0:  
                          sys.exit(0)  
                  except OSError, e:  
                      sys.stderr.write('fork #1 failed: %d (%s)\n' % (e.errno, e.strerror))  
                      sys.exit(1)  
                  os.setsid()  
                  os.chdir("/")  
                  os.umask(0)  
            
                  try:  
                      pid = os.fork()  
                      if pid > 0:  
                          sys.exit(0)  
                  except OSError, e:  
                      sys.stderr.write('fork #2 failed: %d (%s)\n' % (e.errno, e.strerror))  
                      sys.exit(1)  
            
                  sys.stdout.flush()  
                  sys.stderr.flush()  
                  si = file(self.stdin, 'r')  
                  so = file(self.stdout, 'a+')  
                  se = file(self.stderr, 'a+', 0)  
                  os.dup2(si.fileno(), sys.stdin.fileno())  
                  os.dup2(so.fileno(), sys.stdout.fileno())  
                  os.dup2(se.fileno(), sys.stderr.fileno())  
            
                  atexit.register(self.delpid)  
                  pid = str(os.getpid())  
                  file(self.pidfile,'w+').write('%s\n' % pid)  
            
              def delpid(self):  
                  os.remove(self.pidfile)  
            
              def start(self):  
                  try:  
                      pf = file(self.pidfile,'r')  
                      pid = int(pf.read().strip())  
                      pf.close()  
                  except IOError:  
                      pid = None  
            
                  if pid:  
                      message = 'pidfile %s already exist. Daemon already running?\n'  
                      sys.stderr.write(message % self.pidfile)  
                      sys.exit(1)  
            
                  self._daemonize()  
                  self._run()  
            
              def stop(self):  
                  try:  
                      pf = file(self.pidfile,'r')  
                      pid = int(pf.read().strip())  
                      pf.close()  
                  except IOError:  
                      pid = None  
            
                  if not pid:  
                      message = 'pidfile %s does not exist. Daemon not running?\n'  
                      sys.stderr.write(message % self.pidfile)  
                      return  
            
                  try:  
                      while 1:  
                          os.kill(pid, SIGTERM)  
                          time.sleep(0.1)  
                          os.system("kill -9 `jps|grep RunJar|awk '{print $1}'`")  
                  except OSError, err:  
                      err = str(err)  
                      if err.find('No such process') > 0:  
                          if os.path.exists(self.pidfile):  
                              os.remove(self.pidfile)  
                      else:  
                          print str(err)  
                          sys.exit(1)  
            
              def restart(self):  
                  self.stop()  
                  self.start()  
          class MyDaemon(Daemon):  
              def _run(self):  
                  while True:  
                      proccess = os.popen("jps|grep RunJar|awk '{print $1}'|wc -l").read().strip()  
                      port = os.popen("netstat -tnl|grep 10000|awk '{print $4}'|grep 10000|wc -l").read().strip()  
                      if proccess == '0':  
                          os.system('service hive-thrift start')  
                      time.sleep(2)  
          if __name__ == '__main__':  
                          daemon = MyDaemon('/tmp/watch_process.pid')  
                          if len(sys.argv) == 2:  
                                          if 'start' == sys.argv[1]:  
                                                          daemon.start()  
                                          elif 'stop' == sys.argv[1]:  
                                                          daemon.stop()  
                                          elif 'restart' == sys.argv[1]:  
                                                          daemon.restart()  
                                          else:  
                                                          print 'Unknown command'  
                                                          sys.exit(2)  
                                          sys.exit(0)  
                          else:  
                                          print 'usage: %s start|stop|restart' % sys.argv[0]  
                                          sys.exit(2)  
      

      將代碼保存為hivemonitor.py 賦予可執行權限

      chmod +x hivemonitor.py

      運行腳本./hivemonitor.py start

      上面腳本在centos 5.8 python 2.7環境測試通過

      預約申請免費試聽課

      填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

      上一篇:python統計日志ip訪問數腳本
      下一篇:python命令行下按tab建補全的方法

      關于 python 中的 setup.py

      Python 程序員的 10 個常見錯誤

      使用 Python 創建你自己的 Shell (上)

      2015年出現的十大流行 Python 庫

      • 掃碼領取資料

        回復關鍵字:視頻資料

        免費領取 達內課程視頻學習資料

      • 視頻學習QQ群

        添加QQ群:1143617948

        免費領取達內課程視頻學習資料

      Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

      選擇城市和中心
      黑龍江省

      吉林省

      河北省

      湖南省

      貴州省

      云南省

      廣西省

      海南省

      高清特黄a大片,日本真人真做爰,特级做人爱C级,免费a级毛片 百度 好搜 搜狗
      <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>