前阵放假时候,帮人跑实验,需要在一台服务器上跑一堆java实验程序。
为了实验结果的公正性,要保证每次只跑一个实验,也就是需要串行的跑完所有java程序。
刚开始的时候,我每跑一个程序,隔一段时间去服务器上检查一下是否跑完,需要时时留意,实在有点不爽,人也不能走开。
于是写了个shell脚本:串行的去执行一批java程序任务列表。
过程如下:
1.新建任务列表
以实验为例的tasklist.txt:
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
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
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
java -cp fastPPV0318.jar -Xms1024m -Xmx2048m -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O1.properties fanwei.ppv.execution.LocalPPVSerializerMain > dblpHybridG1O1LocalPPV.log
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
java -cp fastPPV0318.jar -Xms1024m -Xmx2048m -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O2.properties fanwei.ppv.execution.LocalPPVSerializerMain > dblpHybridG1O2LocalPPV.log
java -cp fastPPV0318.jar -Xms1024m -Xmx2048m -Dppv.config=/home/zhufw/fastppv/config/ppv_dblp_30000_hybridG1O1.properties fanwei.ppv.execution.OnlineQueryProcess > dblpHybridG1O1Query.log
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
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:
#!/bin/bash
if [ "$1" = "" ] ; then
echo "Bad command. No tasklist file been appointed. Right format: $0 [tasklist.txt]"
exit 1
fi
tasks=`cat $1|wc -l`
echo "total tasks founded:$tasks"
echo "Now begin running....."
cat $1|while read line
do
tasks=`jps|wc -l`
while [ $tasks -gt 1 ]
do
sleep 20
echo "task is running"
tasks=`jps|wc -l`
done
$line &
echo "running $line"
sleep 5
done
echo "end."
以上脚本只是简单的一个脚本,会依次读取tasklist.txt里的任务,并每隔20秒检查一下是否有java程序在运行,如果没有,则执行当前读取到的任务,否则循环检查。
3.执行脚本
./batchRun.sh tasklist.txt > batchRun.log &
OK,白天可以和朋友出去玩了,晚上回来检查结果。
脚本很简单,也不完美,有很大局限性,不过让机器去胜任,能很大提升效率。
分享到:
相关推荐
批量执行hbase shell 命令 #!/bin/bash source /etc/profile ...以上这篇hbase-shell批量命令执行脚本的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
批量检测端口并导出记录 附件中的telnet.sh为执行脚本 ip.txt为IP地址,端口在脚本中自定 实现多IP多端口 默认路径/root 上传到服务器默认路径下直接可以使用 运行完成后: log.txt为记录清单
本脚本通过shell编程,可以将需要批量执行的命令记录在命令文本,然后通过脚本批量刷新执行。本例提供在单台交换机上的批量操作,如需要同时在多台上同时执行批量命令,可以QQ联系。
NULL 博文链接:https://bicashy.iteye.com/blog/1522713
shell连接oracle数据库工具脚本:支持select/insert/update/delete 部署位置:/root/sysmonitor db:数据库文件夹 dbconfig.properties:数据库配置文件, dbConnectTest.sh:连接测试文件 dbExecurteSQL.sh:...
做好ip清单,每行一个ip,ssh批量登录执行命令
资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
通过shell脚本执行scp和ssh命令
1.在shell脚本执行python脚本时,需要通过python脚本的返回值来判断后面程序要执行的命令 例:有两个py程序 hello.py 代码如下: def main(): print “Hello” if __name__==’__main__’: main() world.py def ...
Shell Sample 博文链接:https://flyfoxs.iteye.com/blog/1563992
shell脚本批量部署,可以帮助linux学些脚本的人提供资料
shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本shell 脚本
批量运行程序SHELL脚本!可以根据执行命令个性化修改,仅供参考!
Shell脚本一键启动和停止jar,包含启动所有,启动指定的jar,停止所有,停止指定的jar,重启所有的jar
在shell脚本中向SQL文件传递参数,并且在shell脚本中执行SQL文件。
使用一般的mysql命令或者是sql脚本都可以插入数据到mysql数据表中,我这里介绍如何是Shell批量的从CSV文件中添加数据到mysql数据库中,方便数据迁徙,测试数据的添加之类的工作。
让Android系统或Android应用执行shell脚本,方法一是:通过修改/system/init/init.c,在里面写入执行脚本的命令。方法二是:启动一个服务,让这个服务去执行脚本。
最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,另外该脚本,也可以通过Python脚本实行远程调用,详细如下所示: 目前该脚本是将Container ID写死在脚本中,当然也可以通过...
linux 批量解压文件shell脚本 教程:https://www.bilibili.com/video/BV1Zi4y1C7rL?spm_id_from=333.999.0.0
学习shell脚本,了解linux知识。