我正在管理一个WiFi网络与多个中继器(接入点)。
我制作了一个脚本,用于统计每个用户的连接用户数量。例如,对于AP 1和2:在Linux shell脚本上并行化行(命令,进程...)
[email protected]:~/Temporal/ClientesActivos$ ./ClientesActivos-AP-N.sh 1
3
[email protected]:~/Temporal/ClientesActivos$ ./ClientesActivos-AP-N.sh 2
10
但它是一个位慢。例如,对于AP 3:
[email protected]:~/Temporal/ClientesActivos$ time ./ClientesActivos-AP-N.sh 3
5
real 0m7.074s
user 0m0.040s
sys 0m0.040s
所以,只要我有10点以上的接入点,我想并行所有的读数。我制作了另一个脚本,调用背景中的各个请求。例如:
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"
但这似乎不起作用。至少在壳测试:
[email protected]:~/Temporal/ClientesActivos$ echo $a
[email protected]:~/Temporal/ClientesActivos$ a=$(./ClientesActivos-AP-N.sh 4)
[email protected]:~/Temporal/ClientesActivos$ echo $a
6
[email protected]:~/Temporal/ClientesActivos$ unset a
[email protected]:~/Temporal/ClientesActivos$ echo $a
[email protected]:~/Temporal/ClientesActivos$ a=$(./ClientesActivos-AP-N.sh 4) &
[1] 13527
[A few minutes later...]
[email protected]:~/Temporal/ClientesActivos$ echo $a
[1]+ Done a=$(./ClientesActivos-AP-N.sh 4)
我在做什么错的,什么是方法并行各行的shell脚本?是后台处理正确的方法?
进一步的资料:
- 我的壳是猛砸,但通用的答案会是有用的。
让你的异步脚本写入文件,而不是分配给变量(后者可能是不可能的)。 –
我也在想,@n.m。但是这需要更多的编程(检查文件是否已经充满了数据,不仅是已创建的,而是空的,等等),所以我想知道是否有更简单的方法。如果没有更好的方法,我会使用它。谢谢。 –
不,让他们写入不同的文件,每个作业一个文件。 –