我写了个自动重启进程 的shell脚本,直接运行没问题正常,但如果用nohup命令后台运行,执行到第四行kill掉进程后脚本就终止退出了while :
do
  if [ $(ps -ef|grep "node" | grep -v "grep" | wc -l) -eq 1 ];then
    kill $(ps -ef|grep "node" | grep -v grep | awk '{print $2}')
  else
    echo "not found"
  fi
  node /home/run.js &
  sleep 10m
done另外个问题:如果脚本头加上#!/bin/sh ,直接运行脚本也是kill掉进程后退出

解决方案 »

  1.   

    echo $SHELL  看看你默认用的什么shell
      

  2.   

    在当前shell中使用&,将程序至于后台,当前shell结束,此后台程序也就结束了,要想让后台进程继续继续进行nohup command &来执行
      

  3.   

    还可以使用screen,可以统一的管理多个会话的界面和相应的功能。
      

  4.   

    直接后面   & 后台运行
      

  5.   

    killall 会杀掉同名的所有进程 其中也包括当前执行的脚本https://blog.csdn.net/wsclinux/article/details/50387121