`
singleant
  • 浏览: 378617 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【shell】串行执行批量任务脚本

阅读更多

前阵放假时候,帮人跑实验,需要在一台服务器上跑一堆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,白天可以和朋友出去玩了,晚上回来检查结果。

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

1
1
分享到:
评论
1 楼 haclyone 2012-04-06  
学习了,我以前也遇到过楼主一样的问题,当时我怎么就没有想到呢

相关推荐

    shell的多线程&当前文件夹下批量插入MySQL

    脚本最后计算运行时间,提供了一种监控任务执行情况的方式。 总结起来,虽然Shell本身不支持多线程,但我们可以通过FIFO文件和进程间的通信来模拟多线程行为,实现批量处理任务,例如在当前目录下批量插入MySQL...

    SSH Secure Shell_串口和ssh_footfk9_ssh工具_shell和ssh_SecureShell_

    6. **脚本和自动化**:SSH工具还常常支持脚本化和自动化,这意味着可以通过编写脚本来批量执行远程任务,例如系统维护、备份等。这对于IT管理员来说非常有用,可以提高效率并减少错误。 7. **公钥认证**:SSH支持...

    gateway_factory.rar

    描述中提到的“shell脚本调用linux应用,批量快速测试多个串口和网络”,说明这个压缩包内包含了至少一个Shell脚本,该脚本设计用于在Linux环境中运行。它的主要功能是自动化测试串行端口(serial ports)和网络连接...

    远程调用linux命令的demo

    5. **SaltStack**: SaltStack 是一种远程执行引擎,用于配置管理、任务执行和状态管理,同样基于SSH进行通信。 6. **Chef**: Chef是另一个自动化基础设施管理工具,通过Ruby DSL(领域特定语言)编写配置脚本,...

    串口工具SecureCRT

    它支持VBS、JScript和Perl脚本,可以编写自动化脚本来执行批量任务,如文件传输、命令执行等,极大地减轻了重复劳动的负担。 总的来说,SecureCRT凭借其强大的功能、出色的稳定性和易用性,成为IT专业人士进行串口...

    电子-SecureCRTx86.rar

    用户可以通过VBS(Visual Basic Script)或Python编写脚本,实现自动化任务,如批量执行命令、文件传输等,极大地提升了工作效率。宏功能则允许录制和回放一系列操作,对于重复性的任务,可以避免手动操作的繁琐。 ...

    DataX Web分布式数据同步工具-其他

    15、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔; 16、运行报表:支持实时查看运行数据,以及调度报表,如调度日期分布图,调度成功分布图等...

    TTERMPRO带有SSH绿色软件

    4. **自动化脚本执行**:TTERMPRO可能支持脚本执行,用户可以编写自动化脚本来批量处理重复任务,提高工作效率。 总的来说,TTERMPRO以其全面的连接方式、安全的SSH支持以及便携的特性,成为了IT专业人士在远程管理...

    工具SecureCRT

    总的来说,SecureCRT是一款强大且灵活的终端工具,无论是在日常的服务器维护、远程故障排查,还是在自动化任务执行中,都能提供高效且安全的解决方案。其便携版(SecureCRTPortable)则让用户可以在任何电脑上轻松...

    SecureCRTwin7可用的超级终端

    通过使用内置的VBS(Visual Basic Script)或者宏命令,用户可以编写脚本来实现自动化任务,如批量登录、执行命令、传输文件等,这在日常运维工作中能够大大节省时间。 压缩包中的"DT-5001~DT-5002~DT-5003串口驱动...

    scrt串口小工具.zip

    此外,SecureCRT还具有脚本自动化能力,支持批处理命令,用户可以通过编写脚本来执行一系列操作,如自动登录、执行命令、传输文件等,这对于日常维护工作或是批量处理任务非常有用。同时,它还支持VT100、ANSI和...

    SecureCRT 8.0.7z

    此外,它还支持批处理脚本,可以自动化执行一系列命令,这对于批量操作或定时任务非常有用。 4. **会话同步**:在多窗口同时进行操作时,SecureCRT的会话同步功能允许用户在一个窗口中输入命令,其他窗口会自动执行...

    SecureCRT-x86-7.1.1.264-3987

    除此之外,SecureCRT还具备脚本自动化功能,用户可以通过编写批处理脚本自动化执行一系列命令,这对于日常维护工作和批量任务处理来说非常有用。此外,它支持自定义颜色主题和字体设置,可以根据个人喜好调整终端...

    securecrt securecrt securecrt securecrt

    此外,SecureCRT支持脚本自动化,用户可以通过编写VBS或Python脚本来执行重复的任务,如批量登录、执行命令或传输文件,大大提升了工作效率。对于系统管理员来说,这一特性尤其实用。 在安全方面,SecureCRT支持...

    SecureCRSecureFXPortable64

    5. **脚本支持**:支持批处理命令和脚本,可以自动化执行重复任务。 6. **会话共享**:用户可以将多个会话保存并分享,便于团队协作。 **SecureFX** SecureFX是一款文件传输客户端,专为SecureCRT用户设计,提供...

    SecureCRTPortable

    SecureCRT支持批处理脚本,用户可以通过VBS、Python等脚本语言编写自动化任务,如批量执行命令、传输文件等,提高工作效率。 ### 6. 文件传输 通过内置的SCP(Secure Copy)和SFTP(SSH File Transfer Protocol)...

    串口软件SecureCRT

    通过内置的VBS(Visual Basic Script)或外部脚本语言,用户可以编写自定义脚本来自动执行重复性任务,如定时执行命令、批量上传文件等。这对于需要频繁进行系统维护或自动化测试的用户来说,极大地减轻了工作负担。...

    LInux嵌入式操作系统期末试题.doc

    编写Shell脚本可以实现批量创建和删除用户。例如,创建30个名为student01至student30的用户,用户组为class1,可以编写一个简单的Shell脚本,通过for循环实现用户添加。删除用户只需将脚本中的useradd命令替换为...

    secureCRT.zip

    4. **脚本自动化**:支持批处理命令和脚本,可以自动化执行重复性的任务,如批量登录服务器进行系统维护。 5. **颜色主题和字体设置**:提供多种颜色主题和字体选择,以适应不同的视觉需求。 6. **会话管理**:可以...

    SecureCRT 连接工具

    6. 自动化脚本:SecureCRT支持VBS、JScript和Perl脚本,可以自动化执行一系列命令,例如批量登录、执行系统维护任务等,极大提升了工作效率。 7. 键绑定:对于习惯使用终端快捷键的用户,SecureCRT允许自定义键盘...

Global site tag (gtag.js) - Google Analytics