emr中shell脚本查询不同节点中的文件是否存在
时间: 2023-11-16 11:05:46 浏览: 142
判断文件是否存在的shell脚本代码
可以使用以下命令在EMR集群中查询不同节点中的文件是否存在:
```sh
#!/bin/bash
# 定义要检查的文件列表
files_to_check=(/path/to/file1 /path/to/file2 /path/to/file3)
# 获取EMR集群中的所有节点
nodes=$(yarn node -list | awk '{print $1}' | grep -v "^Node")
# 遍历所有节点,检查文件是否存在
for node in $nodes
do
echo "Checking files on node $node..."
for file in "${files_to_check[@]}"
do
ssh -q $node "[ -f $file ]" && echo "$file exists on node $node" || echo "$file does not exist on node $node"
done
done
```
说明:
- `files_to_check`:定义要检查的文件列表,可以根据实际情况修改。
- `nodes`:使用`yarn node -list`命令获取EMR集群中的所有节点,并使用`awk`和`grep`过滤掉表头和空行,得到节点列表。
- `for node in $nodes`:遍历所有节点。
- `ssh -q $node "[ -f $file ]"`:使用`ssh`命令连接到节点,并在节点上执行`[ -f $file ]`命令检查文件是否存在。`-q`选项表示不显示输出,只返回退出状态码。如果文件存在,则返回0;否则返回非0。
- `&&`和`||`:根据退出状态码判断文件是否存在,如果存在则输出相应信息,否则输出另一种信息。
阅读全文