在日常工作中,熟练掌握 xargs 的使用命令可以提升工作效率,今天分享几个我自己的遇到的场景。
- 使用 xargs 做批量 处理
[root@master ~]#
[root@master ~]# cat node_list
192.168.250.88
192.168.250.100
192.168.250.188
[root@master ~]# cat node_list | xargs -I {} sshpass -f password ssh root@{} hostname
worker1
worker2
worker3
[root@master ~]#
说明: xargs -I {}, -I 后面接一个 变量替换字符 {} ,这个字符用来替换 node_list 里面的每一个项,在后面的 root@{} 命令中,将使用 node_list 里面的 ip 来代替 {}
- 使用 xargs 来做批量复制
[root@master ~]# cat node_list | xargs -I {} sshpass -f password ssh root@{} ls /root/zhoulu_txt
ls: cannot access '/root/zhoulu_txt': No such file or directory
ls: cannot access '/root/zhoulu_txt': No such file or directory
ls: cannot access '/root/zhoulu_txt': No such file or directory
[root@master ~]### 使用 scp 命令 把 zhoulu_txt 文件 批量复制到 node_list 里面的 服务器上
[root@master ~]# cat node_list | xargs -I {} sshpass -f password scp zhoulu_txt root@{}:/root/
[root@master ~]#
[root@master ~]#
[root@master ~]# cat node_list | xargs -I {} sshpass -f password ssh root@{} ls /root/zhoulu_txt
/root/zhoulu_txt
/root/zhoulu_txt
/root/zhoulu_txt
- -n 选项,指定每行 参数的个数
[root@master ~]### 把所有的参数放在一行,当作一个参数使用
[root@master ~]# xargs -a node_list
192.168.250.88 192.168.250.100 192.168.250.188
[root@master ~]### 加了 -n 选项后,指定每行 1 个参数
[root@master ~]# xargs -n 1 -a node_list
192.168.250.88
192.168.250.100
192.168.250.188
[root@master ~]### -n 2 指定,每行两个参数
[root@master ~]# xargs -n 2 -a node_list
192.168.250.88 192.168.250.100
192.168.250.188
[root@master ~]#
[root@master ~]#