一直没系统学过这个,今天是现上轿现扎耳朵眼儿,现学现卖
这个程序的目的是定时检查31个进程,始终保持31个中有10个在跑

 

  1. #!/bin/sh 
  2. i=1 
  3. running_count=0 
  4. while [ $i -lt 32 ] 
  5. do 
  6.         pcount=`ps -ef | grep "spider.php $i$" | wc -l` 
  7.         echo 'provid:' $i 'pcount:' $pcount 
  8.         if [ "$pcount" -gt 0 ]; then 
  9.                 #echo "The process already run" 
  10.                 running_count=`expr $running_count + $pcount` 
  11.         fi 
  12.         i=`expr $i + 1` 
  13. done 
  14. echo "" 
  15. echo "running process count:" $running_count 
  16. start_pcount=`expr 15 - $running_count` 
  17. echo "will start process count:" $start_pcount 
  18. echo "" 
  19. if [ $start_pcount -ge 1 ]; then 
  20.         i=1 
  21.         n=0 
  22.         while [ $i -lt 32 ] 
  23.         do 
  24.                 [ $n -ge $start_pcount ] && break 
  25.                 pcount=`ps -ef | grep "spider.php $i$" | wc -l` 
  26.                 if [ "$pcount" -eq 0 ]; then 
  27.                         echo "start process $i" 
  28.                         /usr/local/bin/php /data1/apache/htdocs/kaoshi.edu.sina.com.cn/_test/spider.php $i >> /usr/home/wanghui3/spider_$i.log 2>&1 & 
  29.                         n=`expr $n + 1` 
  30.                 fi 
  31.                 i=`expr $i + 1` 
  32.         done 
  33. fi 




加在crontab中,定时执行:
*/2 * * * * cd /data1/apache/htdocs/xxxx.com.cn/_test && /home/wanghui3/spider_d >> /usr/home/wanghui3/spider_d.log 2>&1