Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在2分钟内每5秒运行一个shell脚本?_Shell_Cron_Scheduled Tasks - Fatal编程技术网

如何在2分钟内每5秒运行一个shell脚本?

如何在2分钟内每5秒运行一个shell脚本?,shell,cron,scheduled-tasks,Shell,Cron,Scheduled Tasks,我已经看到了很多解决一半问题的方法——每5秒运行一次脚本 除此之外,我也只想让它运行2分钟 脚本的要点是在一段时间内在某个位置对RSSI进行采样: #!/bin/bash RSSI_CSV=$1 DISTANCE=$2 RSSI=$(iwconfig wlan0 | awk -F'[ =]+' '/Signal level/ {print $7}\') printf "$DISTANCE,$RSSI\n" >> $RSSI_CSV 在命令行中,使用以下命令调用它: sh rss

我已经看到了很多解决一半问题的方法——每5秒运行一次脚本

除此之外,我也只想让它运行2分钟

脚本的要点是在一段时间内在某个位置对RSSI进行采样:

#!/bin/bash

RSSI_CSV=$1
DISTANCE=$2
RSSI=$(iwconfig wlan0 | awk -F'[ =]+' '/Signal level/ {print $7}\')

printf "$DISTANCE,$RSSI\n" >> $RSSI_CSV
在命令行中,使用以下命令调用它:

sh rssi_script.sh output.csv position
解决我的问题最可靠的解决方案是什么

我考虑过的可能性:

  • 在脚本内部重复脚本40次(测量RSSI 40次,并将其输出到CSV 40次,在整个实验过程中位置将保持不变),这也将解决将运行时间限制为2分钟的问题。我可能会添加一些新的命令行参数,如果每次都要更改40个变量,则很难跟踪这些参数
  • 使用watch每5秒采样一次,cron将采样时间限制为2分钟(不是100%cron可以做到这一点)
  • 2分钟的while循环(不知道如何做这样的while循环?)
  • 使用cron将shell脚本作为脚本的40个进程启动,并将每个迭代延迟5秒,我不确定命令行参数将如何通过该进程传递,正如我上面所说的,我可能会添加一些新的命令行参数,从而导致问题(额外工作)
让我知道,如果有任何信息,我已经错过或将帮助,并感谢任何人都可以提供任何帮助

#!/bin/bash

[ "$3" = "0" ] && { exit; }

RSSI_CSV=$1
DISTANCE=$2
RSSI=$(iwconfig wlan0 | awk -F'[ =]+' '/Signal level/ {print $7}\')

printf "$DISTANCE,$RSSI\n" >> $RSSI_CSV

sleep 5
N=$3
$0 $1 $2 $((N-1))
像这样跑:

sh rssi_script.sh output.csv position 24

受Petermm输入的启发,我设法让它工作起来,事实上,运行N个样本并在它们之间使用硬编码的rest对我来说效果更好

#!/bin/bash

RSSI_CSV=$1
DISTANCE=$2
N=$3

while [ $N -ne 0 ]
do
    RSSI=$(iwconfig wlan0 | awk -F'[ =]+' '/Signal level/ {print $7}\')
    printf "$DISTANCE,$RSSI\n" >> $RSSI_CSV
    sleep 2 
    ((N--))
    echo $N
done
exit

至少在最后一行使用
exec
作为尾部递归优化。使用exec是什么意思?新脚本似乎不起作用,我得到错误rssi_script.sh:13:rssi_script.sh:rssi_script:notfound