免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1466 | 回复: 1
打印 上一主题 下一主题

这段脚本如何精简呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-31 15:02 |只看该作者 |倒序浏览
哪位能用帮忙精简一下,感激不禁
原理:
利用脚本监视进程,当检测到进程中没有fah运行的时候自动启动;如果检测到fah程序已经运行,等待若干分钟再检测。
延伸:
可以建立一个joblist.lst文件来保存不同的启动命令,在命令中加入-oneunit参数,这样就可以有计划的跑不同的参数,比如像我,跑完一个bigadv大包想歇两天,每天只开半天跑smp2,joblist.lst可以预先编辑成

screen -d -m ./fah6 -local -smp 8 -bigadv -verbosity 9 -oneunit
screen -d -m ./fah6 -local -smp 7 -advmethods -verbosity 9 -oneunit
screen -d -m ./fah6 -local -smp 7 -advmethods -verbosity 9 -oneunit
screen -d -m ./fah6 -local -smp 7 -advmethods -verbosity 9 -oneunit
screen -d -m ./fah6 -local -smp 8 -bigadv -verbosity 9 -oneunit
  1. #! /bin/bash
  2. #The original code came from http://bbs.ustc.edu.cn/cgi/bbscon?bn=Linux&fn=M4B696189
  3. sleep 600 #stop 10min to make sure the system is start-up well
  4. list="/home/xxx/folding/joblist.lst" #File that contains submit-job commands
  5. job=`head -n1 $list` #Load the first line
  6. num_job=`less $list |wc -l`
  7. job_exe="fah6"
  8. num_cpu=1
  9. rm -f joblist.tmp

  10. while [ "$num_job" -ge 2 ]
  11. do
  12.         for ((i=0; i<1000; i++))
  13.         do
  14.                 job_count=`ps -ef|grep $job_exe | grep -v "grep"|grep -v "SCREEN"|wc -l`

  15.                 while [ "$job_count" -ge "$num_cpu" ]
  16.                 do
  17.                 sleep 1800 # 如果当前有num_cpu个任务在运行的话,等1800秒再检查一次
  18.                 job_count=`ps -ef|grep $job_exe | grep -v "grep"|grep -v "SCREEN"|wc -l`
  19.                 echo $job_count         
  20.                 done
  21. # 现在有CPU空闲了,运行一个任务
  22.         pushd /home/xxx/folding/smp
  23.         $job &
  24.         echo `date`
  25.         echo $job
  26.         popd
  27. # Remove the submitted job from joblist
  28.         cp $list joblist.tmp; sed 1d joblist.tmp > $list ; rm -f joblist.tmp
  29.         num_job=`less $list |wc -l`
  30.         echo $num_job
  31.         sleep 600 #Wait 10 minutes to make sure fah starts properly
  32. done
  33. done
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2010-03-31 15:08 |只看该作者
ps -ef|grep $job_exe | grep -v "grep"|grep -v "SCREEN"|wc -l
这里少用些管道行吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP