介绍:
xargs 是给命令传递参数的一个过滤器,可以将管道或标准输入的数据转换成参数,默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行,不过通过 xargs 的处理,换行将被空格取代。
举一个例子:我们用管道符传输到xargs,并为每个参数运行touch命令,-t表示在执行之前先打印,创建三个文件:
[xlucas@hadoop1 ~]$ echo "file1 file2 file3"|xargs -t touch
touch file1 file2 file3
指定运行参数
默认情况下,传递给命令的参数数量由系统限制决定。-n 选项指定要传递给命令的参数个数。xargs根据需要多次运行指定的命令,直到所有参数都用完为止。
下面是通过获取hadoop的application,然后进行kill操作
[xlucas@hadoop1 ~]yarn application -list |grep :Init_H |awk -F " " '{print "yarn application -kill "1}'|xargs -n4 -t sh
如何运行多个命令
要使用xargs运行多个命令,请使用-I选项。在I后面自定义一个传递参数符号,所有匹配的项都会替换为传递给xargs的参数。
下面是通过获取hadoop的application新,然后进行kill操作和输出
[xlucas@hadoop1 ~]yarn application -list |grep :Init_H |awk -F " " '{print "yarn application -kill "1}'|xargs -n4 -I % sh -c 'sh %;echo %'