gpt4 book ai didi

linux - 在 Linux shell 脚本上并行化行(命令、进程...)

转载 作者:太空狗 更新时间:2023-10-29 11:12:47 26 4
gpt4 key购买 nike

我正在管理一个具有多个中继器(接入点)的WiFi网络。
我制作了一个脚本来计算每个人的连接用户数。 AP 1 和 2 的示例:

luis@Fresoncio:~/Temporal/ClientesActivos$ ./ClientesActivos-AP-N.sh 1
3
luis@Fresoncio:~/Temporal/ClientesActivos$ ./ClientesActivos-AP-N.sh 2
10

但是它有点。 AP 3 示例:

luis@Fresoncio:~/Temporal/ClientesActivos$ time ./ClientesActivos-AP-N.sh 3
5
real 0m7.074s
user 0m0.040s
sys 0m0.040s

所以,只要我有 10 个以上的 AP,我就想并行化所有读数。我制作了另一个脚本,该脚本在后台 中调用各个请求。像这样的东西:

AP-1=$(./ClientesActivos-AP-N.sh 1) &
AP-2=$(./ClientesActivos-AP-N.sh 2) &
AP-3=$(./ClientesActivos-AP-N.sh 3) &
... etc
sleep 20 # Wait 20 seconds for all readings to finish.
echo "$AP-1, $AP-2, $AP-3... etc"

但这似乎行不通。至少在 shell 测试中:

luis@Fresoncio:~/Temporal/ClientesActivos$ echo $a

luis@Fresoncio:~/Temporal/ClientesActivos$ a=$(./ClientesActivos-AP-N.sh 4)
luis@Fresoncio:~/Temporal/ClientesActivos$ echo $a
6
luis@Fresoncio:~/Temporal/ClientesActivos$ unset a
luis@Fresoncio:~/Temporal/ClientesActivos$ echo $a

luis@Fresoncio:~/Temporal/ClientesActivos$ a=$(./ClientesActivos-AP-N.sh 4) &
[1] 13527
[A few minutes later...]
luis@Fresoncio:~/Temporal/ClientesActivos$ echo $a

[1]+ Done a=$(./ClientesActivos-AP-N.sh 4)

我做错了什么以及在 shell 脚本中并行化单行的方法是什么? 后台处理是正确的方法吗?

更多数据:

  • 我的 shell 是 Bash,但通用的答案也很有用。

最佳答案

最简单的方法是使用 GNU Parallel

例子:

parallel ./ClientesActivos-AP-N.sh ::: $(seq 1 5)

关于linux - 在 Linux shell 脚本上并行化行(命令、进程...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com