appArmour.js 803 B

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. 应用守护脚本。当服务器进程失败时,重启IM服务器。
  3. */
  4. var cp = require('child_process');
  5. var worker;
  6. function spawn(spawnScript) {
  7. //进行守护,开启IPC通道,双向通信
  8. worker = cp.spawn('node', [spawnScript], {
  9. stdio: [0, 1, 2, 'ipc']
  10. });
  11. //监视子进程,当其崩溃时处理
  12. worker.on('exit', function (code) {
  13. if (code !== 0) {
  14. console.log('IM server is down, restarting...');
  15. spawn(spawnScript);//重启服务
  16. }
  17. });
  18. worker.on('message', function (msg) {
  19. console.log(msg);
  20. });
  21. }
  22. function main() {
  23. spawn('./bin/spawn.script'); // 要守护的进程文件
  24. process.on('SIGTERM', function () {
  25. worker.kill();
  26. process.exit(0);
  27. });
  28. }
  29. main();