restart.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #!/usr/bin/env python
  2. import sys, os, signal, subprocess, shlex,time
  3. def file_pid(name):
  4. proc1 = subprocess.Popen(shlex.split('ps aux'), stdout=subprocess.PIPE)
  5. proc2 = subprocess.Popen(shlex.split('grep ' + name), stdin=proc1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  6. proc3 = subprocess.Popen(shlex.split('awk \'{print $2}\' '), stdin=proc2.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  7. proc1.stdout.close()
  8. proc2.stdout.close()
  9. out, err = proc3.communicate()
  10. lines = out.splitlines()
  11. pids = []
  12. for line in lines :
  13. item = line.strip()
  14. pid = int(item)
  15. if pid > 0:
  16. pids.append(pid)
  17. if len(pids) > 0 :
  18. return pids
  19. else:
  20. return []
  21. def has_proc(name):
  22. pids = file_pid(name)
  23. return len(pids) > 0
  24. def restart(item):
  25. name = item['file_name']
  26. cmd = item['cmd']
  27. tip = item['tip']
  28. if name:
  29. cur_pid = os.getpid()
  30. pids = file_pid(name)
  31. print "restart " + name
  32. for pid in pids:
  33. try:
  34. if cur_pid != pid:
  35. os.kill(pid, signal.SIGKILL)
  36. print 'kill pid=', pid
  37. else:
  38. continue
  39. except OSError, e:
  40. print "OSError no=", e.errno, " err=", e.strerror
  41. pass
  42. except BaseException, be:
  43. pass
  44. if cmd:
  45. print cmd
  46. time.sleep(1)
  47. os.system(cmd)
  48. time.sleep(1)
  49. if tip:
  50. print "tip:",tip
  51. return
  52. def mac_sys():
  53. plat_name = sys.platform
  54. return (plat_name == 'darwin')
  55. def main():
  56. print "you can input: fcgi,queue,ugc,center,all to restart server or no input it will restart fcgi,queue"
  57. if len(sys.argv) == 2:
  58. option = sys.argv[1]
  59. else:
  60. option = ''
  61. cmds = []
  62. if mac_sys() :
  63. if option == 'fcgi':
  64. cmds.append({'file_name': 'fcgi_run.php','cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"','tip':''})
  65. elif option == 'queue':
  66. cmds.append({'file_name': 'crontab.php','cmd': '','tip':''})
  67. elif option == 'ugc' :
  68. cmds.append({'file_name': 'mac_ugcman', 'cmd': 'sudo ./mac_ugcman','tip':''})
  69. cmds.append({'file_name': 'ugc_srv.php','cmd': 'php ugc_srv.php','tip':"tip: tail -f -n 20 /tmp/ugcman.out"})
  70. elif option == 'center':
  71. cmds.append({'file_name': 'centra_srv.php','cmd': 'php centra_srv.php','tip':''})
  72. elif option == 'room':
  73. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php','tip':''})
  74. cmds.append({'file_name': 'mac_webacc', 'cmd': './mac_webacc','tip':'tail -f -n 20 /tmp/webacc.out'})
  75. elif option == 'factory':
  76. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  77. elif option == 'master':
  78. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  79. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman','tip':''})
  80. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php','tip':''})
  81. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php','tip':''})
  82. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php','tip':''})
  83. elif option == 'slave':
  84. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"','tip': ''})
  85. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman', 'tip': ''})
  86. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  87. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  88. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  89. cmds.append({'file_name': 'mac_webacc', 'cmd': './mac_webacc','tip': 'tail -f -n 20 /tmp/ugcman.out\n tail -f -n 20 /tmp/webacc.out'})
  90. elif option == 'all':
  91. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"','tip': ''})
  92. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  93. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman', 'tip': ''})
  94. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  95. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  96. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  97. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  98. cmds.append({'file_name': 'mac_webacc', 'cmd': './mac_webacc','tip': 'tail -f -n 20 /tmp/ugcman.out\n tail -f -n 20 /tmp/webacc.out'})
  99. else:
  100. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"','tip':''})
  101. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  102. else :
  103. if option == 'fcgi':
  104. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"','tip':''})
  105. elif option == 'queue':
  106. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  107. elif option == 'ugc':
  108. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman','tip':''})
  109. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php','tip':'tail -f -n 20 /tmp/ugcman.out'})
  110. elif option == 'center':
  111. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php','tip':''})
  112. elif option == 'room':
  113. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php','tip':''})
  114. cmds.append({'file_name': 'webacc', 'cmd': './webacc','tip':'tail -f -n 20 /tmp/webacc.out'})
  115. elif option == 'factory':
  116. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  117. elif option == 'master':
  118. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  119. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman','tip':''})
  120. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php','tip':''})
  121. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php','tip':''})
  122. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php','tip':''})
  123. elif option == 'slave':
  124. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"','tip': ''})
  125. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman', 'tip': ''})
  126. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  127. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  128. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  129. cmds.append({'file_name': 'webacc', 'cmd': './webacc','tip': 'tail -f -n 20 /tmp/ugcman.out\ntail -f -n 20 /tmp/webacc.out'})
  130. elif option == 'all':
  131. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"','tip': ''})
  132. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  133. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman', 'tip': ''})
  134. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  135. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  136. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php','tip':''})
  137. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  138. cmds.append({'file_name': 'webacc', 'cmd': './webacc','tip': 'tail -f -n 20 /tmp/ugcman.out\ntail -f -n 20 /tmp/webacc.out'})
  139. else:
  140. print "you must input some tag: fcgi,queue,ugc,center,room,factory,master,slave,all to restart server or no input it will restart fcgi,queue"
  141. for item in cmds :
  142. restart(item)
  143. sys.exit(2)
  144. if __name__ == '__main__':
  145. main()