restart.py 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  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=' + str(pid))
  37. else:
  38. continue
  39. except OSError as e:
  40. print("OSError no=" + str(e.errno) + " err=" + e.strerror)
  41. pass
  42. except BaseException as 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(
  64. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"',
  65. 'tip': ''})
  66. elif option == 'queue':
  67. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  68. elif option == 'ugc':
  69. cmds.append({'file_name': 'mac_ugcman', 'cmd': 'sudo ./mac_ugcman --log 6', 'tip': ''})
  70. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ""})
  71. elif option == 'center':
  72. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  73. elif option == 'room':
  74. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  75. cmds.append({'file_name': 'mac_webacc', 'cmd': './mac_webacc', 'tip': ''})
  76. elif option == 'factory':
  77. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  78. elif option == 'master':
  79. cmds.append(
  80. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"',
  81. 'tip': ''})
  82. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  83. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman --log 6', 'tip': ''})
  84. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  85. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  86. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  87. elif option == 'slave':
  88. cmds.append(
  89. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"',
  90. 'tip': ''})
  91. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman --log 6', 'tip': ''})
  92. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  93. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  94. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  95. cmds.append({'file_name': 'mac_webacc', 'cmd': './mac_webacc --log 6', 'tip': ''})
  96. elif option == 'all':
  97. cmds.append(
  98. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"',
  99. 'tip': ''})
  100. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  101. cmds.append({'file_name': 'mac_ugcman', 'cmd': './mac_ugcman --log 6', 'tip': ''})
  102. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  103. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  104. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  105. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  106. cmds.append({'file_name': 'mac_webacc', 'cmd': './mac_webacc --log 6', 'tip': ''})
  107. else:
  108. cmds.append(
  109. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"',
  110. 'tip': ''})
  111. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  112. else:
  113. if option == 'fcgi':
  114. cmds.append(
  115. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"',
  116. 'tip': ''})
  117. elif option == 'queue':
  118. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  119. elif option == 'ugc':
  120. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman --log 6', 'tip': ''})
  121. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  122. elif option == 'center':
  123. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  124. elif option == 'room':
  125. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  126. cmds.append({'file_name': 'webacc', 'cmd': './webacc --log 6', 'tip': ''})
  127. elif option == 'factory':
  128. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  129. elif option == 'master':
  130. cmds.append(
  131. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"',
  132. 'tip': ''})
  133. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  134. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman --log 6', 'tip': ''})
  135. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  136. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  137. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  138. elif option == 'slave':
  139. cmds.append(
  140. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"',
  141. 'tip': ''})
  142. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman --log 6', 'tip': ''})
  143. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  144. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  145. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  146. cmds.append({'file_name': 'webacc', 'cmd': './webacc --log 6', 'tip': ''})
  147. elif option == 'all':
  148. cmds.append(
  149. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"',
  150. 'tip': ''})
  151. cmds.append({'file_name': 'crontab.php', 'cmd': '', 'tip': ''})
  152. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman --log 6', 'tip': ''})
  153. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php', 'tip': ''})
  154. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php', 'tip': ''})
  155. cmds.append({'file_name': 'room_factory.php', 'cmd': 'php room_factory.php', 'tip': ''})
  156. cmds.append({'file_name': 'room_srv.php', 'cmd': 'php room_srv.php', 'tip': ''})
  157. cmds.append({'file_name': 'webacc', 'cmd': './webacc --log 6', 'tip': ''})
  158. else:
  159. print(
  160. "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")
  161. for item in cmds:
  162. restart(item)
  163. sys.exit(2)
  164. if __name__ == '__main__':
  165. main()