restart.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/usr/bin/env python
  2. import sys, os, signal, subprocess, shlex
  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) > 1 :
  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. if not name:
  28. print 'file name is empty'
  29. return
  30. pids = file_pid(name)
  31. print "start restart " + name
  32. for pid in pids :
  33. try:
  34. os.kill(pid,signal.SIGKILL)
  35. print 'kill pid=' , pid
  36. except OSError, e:
  37. print "OSError no=" , e.errno," err=" , e.strerror
  38. pass
  39. except BaseException, be:
  40. pass
  41. if cmd:
  42. print cmd
  43. os.system(cmd)
  44. return
  45. def mac_sys():
  46. plat_name = sys.platform
  47. return (plat_name == 'darwin')
  48. def main():
  49. print "you can input: fcgi,queue,ugc,center,all to restart server or no input it will restart fcgi,queue"
  50. if len(sys.argv) == 2:
  51. option = sys.argv[1]
  52. else:
  53. option = ''
  54. cmds = []
  55. if mac_sys() :
  56. if option == 'fcgi' :
  57. cmds.append({'file_name': 'fcgi_run.php','cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"'})
  58. elif option == 'queue' :
  59. cmds.append({'file_name': 'crontab.php','cmd': ''})
  60. elif option == 'ugc' :
  61. cmds.append({'file_name': 'mac_ugcman','cmd': 'sudo ./mac_ugcman'})
  62. cmds.append({'file_name': 'ugc_srv.php','cmd': 'php ugc_srv.php'})
  63. elif option == 'center':
  64. cmds.append({'file_name': 'centra_srv.php','cmd': 'php centra_srv.php'})
  65. elif option == 'all':
  66. cmds.append({'file_name': 'fcgi_run.php','cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"'})
  67. cmds.append({'file_name': 'crontab.php','cmd': ''})
  68. cmds.append({'file_name': 'mac_ugcman','cmd': './mac_ugcman'})
  69. cmds.append({'file_name': 'ugc_srv.php','cmd': 'php ugc_srv.php'})
  70. cmds.append({'file_name': 'centra_srv.php','cmd': 'php centra_srv.php'})
  71. else:
  72. cmds.append({'file_name': 'fcgi_run.php','cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 1 -f "php fcgi_run.php"'})
  73. cmds.append({'file_name': 'crontab.php queue','cmd': ''})
  74. cmds.append({'file_name': 'mac_ugcman','cmd': 'sudo ./mac_ugcman'})
  75. cmds.append({'file_name': 'ugc_srv.php','cmd': 'php ugc_srv.php'})
  76. cmds.append({'file_name': 'centra_srv.php','cmd': 'php centra_srv.php'})
  77. else :
  78. if option == 'fcgi':
  79. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"'})
  80. elif option == 'queue':
  81. cmds.append({'file_name': 'crontab.php', 'cmd': ''})
  82. elif option == 'ugc':
  83. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman'})
  84. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php'})
  85. elif option == 'center':
  86. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php'})
  87. elif option == 'all':
  88. cmds.append(
  89. {'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"'})
  90. cmds.append({'file_name': 'crontab.php', 'cmd': ''})
  91. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman'})
  92. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php'})
  93. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php'})
  94. else:
  95. cmds.append({'file_name': 'fcgi_run.php', 'cmd': 'spawn-fcgi -a 127.0.0.1 -p 9100 -F 10 -f "php fcgi_run.php"'})
  96. cmds.append({'file_name': 'crontab.php queue', 'cmd': ''})
  97. cmds.append({'file_name': 'ugcman', 'cmd': './ugcman'})
  98. cmds.append({'file_name': 'ugc_srv.php', 'cmd': 'php ugc_srv.php'})
  99. cmds.append({'file_name': 'centra_srv.php', 'cmd': 'php centra_srv.php'})
  100. for item in cmds :
  101. restart(item)
  102. sys.exit(2)
  103. if __name__ == '__main__':
  104. main()