我使用下面的xargs命令在file.txt包含主机的所有主机(没有参数)上并行执行。
xar-n 1 -P 500 SCRIPT_PATHt下面是在一个主机上执行脚本(带参数)的方法
SCRIPT_PATH host1 现在,我的要求是通过xarg命令并行地在多个主机上执行带有参数的脚本。在下面试过,但没起作用。有可能通过xargs来完成吗?
xargs -n 1 -P 500 SCRIPT_PATH "发布于 2019-08-05 05:03:31
xargs解决方案:-I参数
有一个用于xargs的-I选项:
xargs命令提供了在命令行末尾以外的某个位置插入列出的参数的选项。xargs的-I选项接受一个字符串,该字符串将在执行命令之前被提供的输入替换。一个常见的选择是%。
就你而言:
xargs -n 1 -P 500 -I % SCRIPT_PATH % "arguments" < file.txt # % as input line
xargs -n 1 -P 500 -I {} SCRIPT_PATH {} "arguments" < file.txt # {} as input lineGNU并行解
GNU并行 --就像xargs一样,但是更强大更方便。
从标准输入并行地构建和执行shell命令行。
管道输入到parallel
您的脚本可以与parallel一起使用,就像用于xargs一样
parallel -n 1 -P 500 -I {} SCRIPT_PATH {} "arguments" < file.txt # just replace xargs with parallel
parallel -P 500 SCRIPT_PATH {} "arguments" < file.txt # you can omit -n 1 -I arg使用parallel参数的--argfile
您可以将输入文件file.txt设置为参数,而不是将其内容按管道排列。如果您希望将脚本的STDIN用于其他目的,则可能会有所帮助。
parallel -P 500 --arg-file file.txt SCRIPT_PATH {} "arguments" # --arg-file argument
parallel -P 500 -a file.txt SCRIPT_PATH {} "arguments" # -a is an --arg-file synonym
parallel -P 500 SCRIPT_PATH {} "arguments" :::: file.txt # '::::' - another way to write -a argfile1parallel使用--sshloginfile远程执行脚本
您可以使用parallel或-slf直接从远程主机管理脚本执行。
parallel -P 500 --slf file.txt --nonall SCRIPT_PATH "arguments"https://stackoverflow.com/questions/57352023
复制相似问题