cat node.list | xargs -I {} -P 16 sh -c 'ping -c 3 -q {} >> ping.log' 2>&1 | sed -n '/^---/,${/^---/p}' >> ping.log 改为同时执行过个脚本
时间: 2024-03-09 14:46:52 浏览: 18
您可以使用`parallel`命令来同时执行多个脚本。以下是使用`parallel`命令并行执行多个脚本的示例:
```
parallel -j 16 ::: "ping -c 3 -q 10.1.2.48 >> ping1.log" "ping -c 3 -q 10.1.2.42 >> ping2.log" "ping -c 3 -q 10.1.2.44 >> ping3.log" "ping -c 3 -q 10.1.2.46 >> ping4.log"
```
在上述命令中,`-j 16`指定了并行执行的作业数,您可以根据需要调整此值。`:::`后面的四个引号内分别是要执行的四个脚本命令,每个命令用双引号括起来,并用空格分隔。每个命令中的`>>`符号将输出追加到对应的日志文件中。您可以根据需要更改每个脚本的命令和日志文件名。
相关问题
cat node.list | xargs -I {} -P 4 sh -c 'ping -c 3 -q {} >> ping.log' 截取---后的内容保存到ping.log
可以使用以下命令将输出结果保存到 `ping.log` 文件中:
```
cat node.list | xargs -I {} -P 4 sh -c 'ping -c 3 -q {} >> ping.log' 2>&1 | sed -n '/^---/,${/^---/p}' >> ping.log
```
解释一下:
- `2>&1` 将标准错误输出重定向到标准输出,这样才能同时保存错误信息和标准输出。
- `sed -n '/^---/,${/^---/p}'` 用于截取 `ping` 命令的输出结果中 `---` 后面的内容。其中 `^---` 表示以 `---` 开头的行,`/,${}` 表示从匹配到的行开始一直到文件结尾的所有行,`/^---/p` 表示打印以 `---` 开头的行。最后将截取的结果追加到 `ping.log` 文件中。
注意:这条命令会将标准输出和标准错误一起输出到 `ping.log` 文件中,如果不需要保存标准错误的信息,可以去掉 `2>&1` 部分。
#!/bin/sh for ip in `cat node.list ` do ping -c 3 -q $ip >> ping.log; done 这个shell脚本怎么多线程执行
你可以使用`xargs`命令来实现多线程执行此脚本。具体操作下:
```
cat node.list | xargs -I {} -P 4 sh -c 'ping -c 3 -q {} >> ping.log'
```
其中`-P 4`指定了同时执行4个线程,`-I {}`指定了替换字符串,`sh -c 'ping -c 3 -q {} >> ping.log'`部分是要执行的命令。这个命令会从`node.list`文件中读取IP列表,然后使用4个线程同时执行`ping`命令,将结果输出到`ping.log`文件中。你可以根据需要,调整`-P`参数的值来控制线程数。