运行程序X次
如何在终端中执行X次程序?
我读到我必须做一个bin / bash txt,但我不知道如何执行这个X次。
你可以使用xargs
和seq
。 通常:
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处于活动状态,从而节省时间:
安装
个人安装不需要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秒重复一次,当你完成后终止它。