串行执行批量任务脚本

本文介绍了一种通过Shell脚本实现的串行执行Java任务的方法。该方法通过创建任务列表并利用Shell脚本循环检查任务执行状态,确保任务串行执行,提高了实验效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前阵放假时候,帮人跑实验,需要在一台服务器上跑一堆java实验程序。

为了实验结果的公正性,要保证每次只跑一个实验,也就是需要串行的跑完所有java程序。

刚开始的时候,我每跑一个程序,隔一段时间去服务器上检查一下是否跑完,需要时时留意,实在有点不爽,人也不能走开。

于是写了个shell脚本:串行的去执行一批java程序任务列表。

过程如下:

1.新建任务列表

以实验为例的tasklist.txt:

Java代码   收藏代码
  1. java -cp fastPPV0318.jar -Xms512m -Xmx1024m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O1.properties fanwei.ppv.preprocess.hubselection.HybridG1O1Selection 1 1 dblp > dblpHybridG1O1Selection.log  
  2. java -cp fastPPV0318.jar -Xms512m -Xmx1024m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O1.properties fanwei.ppv.preprocess.hubselection.HybridG1O1Selection 0.5 1 dblp > dblpHybridG1O1Selection.log  
  3. java -cp fastPPV0318.jar -Xms512m -Xmx1024m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O1.properties fanwei.ppv.preprocess.hubselection.HybridG1O1Selection 1 2 dblp > dblpHybridG1O1Selection.log  
  4. java -cp fastPPV0318.jar -Xms1024m -Xmx2048m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O1.properties fanwei.ppv.execution.LocalPPVSerializerMain  > dblpHybridG1O1LocalPPV.log  
  5. java -cp fastPPV0318.jar -Xms1024m -Xmx2048m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG0.5O1.properties fanwei.ppv.execution.LocalPPVSerializerMain  > dblpHybridG0.5O1LocalPPV.log  
  6. java -cp fastPPV0318.jar -Xms1024m -Xmx2048m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O2.properties fanwei.ppv.execution.LocalPPVSerializerMain  > dblpHybridG1O2LocalPPV.log  
  7. java -cp fastPPV0318.jar -Xms1024m -Xmx2048m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O1.properties fanwei.ppv.execution.OnlineQueryProcess > dblpHybridG1O1Query.log  
  8. java -cp fastPPV0318.jar -Xms1024m -Xmx2048m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG0.5O1.properties fanwei.ppv.execution.OnlineQueryProcess > dblpHybridG0.5O1Query.log  
  9. java -cp fastPPV0318.jar -Xms1024m -Xmx2048m  -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O2.properties fanwei.ppv.execution.OnlineQueryProcess > dblpHybridG1O2Query.log  

 

2.编写串行批量运行脚本

batchRun.sh:

Java代码   收藏代码
  1. #!/bin/bash  
  2. if [ "$1" = "" ] ; then  
  3.    echo "Bad command. No tasklist file been appointed. Right format: $0 [tasklist.txt]"  
  4.    exit 1  
  5. fi  
  6. tasks=`cat $1|wc -l`  
  7. echo "total tasks founded:$tasks"  
  8. echo "Now begin running....."  
  9. cat $1|while read line  
  10. do  
  11. tasks=`jps|wc -l`  
  12. while [ $tasks -gt 1 ]  
  13.   do  
  14.     sleep 20  
  15.         echo "task is running"  
  16.     tasks=`jps|wc -l`  
  17.   done  
  18. $line &  
  19. echo "running $line"  
  20. sleep 5  
  21. done  
  22. echo "end."  

以上脚本只是简单的一个脚本,会依次读取tasklist.txt里的任务,并每隔20秒检查一下是否有java程序在运行,如果没有,则执行当前读取到的任务,否则循环检查。

3.执行脚本

./batchRun.sh tasklist.txt > batchRun.log &

 

OK,白天可以和朋友出去玩了,晚上回来检查结果。

脚本很简单,也不完美,有很大局限性,不过让机器去胜任,能很大提升效率。

 

转载地址:http://singleant.iteye.com/blog/1476229

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值