我从init进程的respawn参数上得到了灵感,写了一个简单的脚本实现自动重启进程。脚本如下:


respawn.sh:实现测试命令printHello.sh的进程被杀死后,自动重启printHello.sh
 
  
  1. #!/bin/bash 
  2. # respawn some command 
  3. while true 
  4. do 
  5.     # Command that start the process 
  6.     # I use a test script named printHello.sh 
  7.     $PWD/printHello.sh 
  8.  
  9.     continue 
  10. done 

测试用脚本
printHello.sh

 
  
  1. #!/bin/bash 
  2. while true 
  3. do 
  4.     echo "Hello" 
  5. done 

请将两个脚本放在同一目录下并赋予运行权限。
$ ./respawn.sh

在另一终端中运行
# 确定printHello.sh是否运行
$ pgrep printHello.sh
# 杀掉所有printHello.sh的process
$ killall printHello.sh
在第一个终端中的输出并没有中断,而是重新运行了printHello.sh