restart.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. if tip:
  49. print "tip:",tip
  50. return
  51. def mac_sys():
  52. plat_name = sys.platform
  53. return (plat_name == 'darwin')
  54. def main():
  55. print "you can input: fcgi,queue,ugc,center,all to restart server or no input it will restart fcgi,queue"
  56. if len(sys.argv) == 2:
  57. option = sys.argv[1]
  58. else:
  59. option = ''
  60. cmds = []
  61. if mac_sys() :
  62. if option == 'fcgi':
  63. 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':''})
  64. elif option == 'queue':
  65. cmds.append({'file_name': 'crontab.php','cmd': '','tip':''})
  66. elif option == 'ugc' :
  67. cmds.append({'file_name': 'mac_ugcman', 'cmd': 'sudo ./mac_ugcman','tip':''})
  68. cmds.append({'file_name': 'ugc_srv.php','cmd': 'php ugc_srv.php','tip':"tip: tail -f -n 20 /tmp/ugcman.out"})
  69. elif option == 'center':
  70. cmds.append({'file_name': 'centra_srv.php','cmd': 'php centra_srv.php','tip':''})
  71. elif option == 'room':
  72. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php','tip':''})
  73. cmds.append({'file_name': 'mac_webacc', 'cmd': './mac_webacc','tip':'tail -f -n 20 /tmp/webacc.out'})
  74. elif option == 'factory':
  75. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  76. elif option == 'master':
  77. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  78. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman','tip':''})
  79. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php','tip':''})
  80. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php','tip':''})
  81. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php','tip':''})
  82. elif option == 'slave':
  83. 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': ''})
  84. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman', 'tip': ''})
  85. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  86. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  87. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  88. 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'})
  89. elif option == 'all':
  90. 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': ''})
  91. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  92. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman', 'tip': ''})
  93. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  94. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  95. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  96. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  97. 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'})
  98. else:
  99. 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':''})
  100. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  101. else :
  102. if option == 'fcgi':
  103. 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':''})
  104. elif option == 'queue':
  105. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  106. elif option == 'ugc':
  107. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman','tip':''})
  108. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php','tip':'tail -f -n 20 /tmp/ugcman.out'})
  109. elif option == 'center':
  110. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php','tip':''})
  111. elif option == 'room':
  112. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php','tip':''})
  113. cmds.append({'file_name': 'webacc', 'cmd': './webacc','tip':'tail -f -n 20 /tmp/webacc.out'})
  114. elif option == 'factory':
  115. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  116. elif option == 'master':
  117. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  118. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman','tip':''})
  119. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php','tip':''})
  120. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php','tip':''})
  121. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php','tip':''})
  122. elif option == 'slave':
  123. 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': ''})
  124. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman', 'tip': ''})
  125. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  126. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  127. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  128. cmds.append({'file_name': 'webacc', 'cmd': './webacc','tip': 'tail -f -n 20 /tmp/ugcman.out\ntail -f -n 20 /tmp/webacc.out'})
  129. elif option == 'all':
  130. 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': ''})
  131. cmds.append({'file_name': 'crontab.php', 'cmd': '','tip':''})
  132. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman', 'tip': ''})
  133. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  134. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  135. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php','tip':''})
  136. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  137. cmds.append({'file_name': 'webacc', 'cmd': './webacc','tip': 'tail -f -n 20 /tmp/ugcman.out\ntail -f -n 20 /tmp/webacc.out'})
  138. else:
  139. 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"
  140. for item in cmds :
  141. restart(item)
  142. sys.exit(2)
  143. if __name__ == '__main__':
  144. main()