运行程序X次

如何在终端中执行X次程序?

我读到我必须做一个bin / bash txt,但我不知道如何执行这个X次。

你可以使用xargsseq 。 通常:

 seq nr_of_times_to_repeat | xargs -Iz command 

例如:

 seq 10 | xargs -Iz xdotool click 1 

将执行xdotool click 1命令10次。

打开终端并使用以下bash命令:

 for i in {1..5}; do xdotool click 1; done 

有点冗长和1秒延迟:

 for i in {1..5}; do echo click \#$i && xdotool click 1 && sleep 1; done click #1 click #2 click #3 click #4 click #5 

这应该做:

 #!/bin/bash x=1 while [ $x -le 10 ] do  x=$(( $x + 1 )) done 

其中10是运行命令的次数

如果你需要建立一个小rest:

 #!/bin/bash x=1 while [ $x -le 10 ] do  sleep 1 x=$(( $x + 1 )) done 

将脚本复制到空文件中,用xdotool命令替换 ,将其保存为run_xdotool.sh ,然后通过以下命令运行:

 sh /path/to/run_xdotool.sh 

或者,您可以使其可执行并简单地运行它

 /path/to/run_xdotool.sh 

另一种解决方案:使用xdotool的内置重复选项

由于您提到使用它来进行点击,最简单的可能是使用xdotool自己的内置重复选项。 格式为:

 xdotool click --delay  --repeat   

要连续10次鼠标点击(按钮1),中间间隔一秒,命令为:

 xdotool click --delay 1000 --repeat 10 1 

如果你有GNU Parallel,你可以运行:

 seq 10 | parallel -N0 doit 

所有新计算机都有多个内核,但大多数程序本质上是串行的,因此不会使用多个内核。 但是,许多任务都非常可并行化:

  • 在许多文件上运行相同的程序
  • 为文件中的每一行运行相同的程序
  • 为文件中的每个块运行相同的程序

GNU Parallel是一种通用的并行化程序,可以在同一台机器上或在您具有ssh访问权限的多台机器上轻松并行运行作业。

如果要在4个CPU上运行32个不同的作业,并行化的直接方法是在每个CPU上运行8个作业:

简单的安排

GNU Parallel会在完成后生成一个新进程 – 保持CPU处于活动状态,从而节省时间:

GNU并行调度

安装

个人安装不需要root访问权限。 这样做可以在10秒内完成:

 (wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

有关其他安装选项,请参阅http://git.savannah.gnu.org/cgit/parallel.git/tree/README

学到更多

查看更多示例: http : //www.gnu.org/software/parallel/man.html

观看介绍video: https : //www.youtube.com/playlist? list = PL284C9FF2488BC6D1

浏览教程: http : //www.gnu.org/software/parallel/parallel_tutorial.html

注册电子邮件列表以获得支持: https : //lists.gnu.org/mailman/listinfo/parallel

您可以使用C样式for循环,它具有优于大括号扩展版本( {1..5} )的能力,可以使用变量来指定终点。 两个版本都比使用外部实用程序( seq )更好。

 t=5 for ((x = 1; x <= t; x++)) do xdotool click 1 done 

全部在一条线上:

 t=5; for ((x = 1; x <= t; x++)); do xdotool click 1; done 

或者您可以在没有循环的情况下执行此操作(对于此特定实用程序和函数):

 xdotool click --repeat 5 --delay 50 1 

您只需使用watch命令:

 watch -nx  

将x更改为以秒为单位的时间。

示例:

 watch -n 1 xdotool click 1 

所以xdotool点击1将每1秒重复一次,当你完成后终止它。