![](/img/trans.png)
[英]Shell script: Parallelizing commands in bash script under Ubuntu linux
[英]Parallelizing lines (commands, processes…) on a Linux shell script
我正在管理一個帶有多個中繼器 (接入點)的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腳本中並行化各行的方法是什么? 后台處理是正確的方法嗎?
更多數據:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.