[英]How to run multiple instances of command-line tool in bash script? + user input for script
我正在尝试从Mac上的单个bash脚本同时启动多个imagesnap
实例。 同样,在运行脚本时通过用户输入提供(某些)自变量也很好。
我连接了4个网络摄像头,并希望以给定的间隔从每个摄像机拍摄一系列图像。 作为bash脚本的绝对初学者,我不知道从哪里开始搜索。 我已经测试了从终端手动运行图像快照的4个实例,它们可以很好地工作,但是仅此而已。
总而言之,我正在寻找一个bash脚本,它可以:
- 编辑 -
考虑了这一点之后,我对如何使用imagesnap -t x.xx
拍摄间隔图像的能力如何组织此脚本有了一个模糊的想法:
要么
使用子Shell运行imagesnap
多个实例
如果可能,请并行启动每个子脚本或子Shell。
由于imagesnap
每个实例将一直运行到终止,因此如果可以使用单个命令将其全部停止,那将是一个很好的选择
以下快速技巧(保存为run-periodically.sh
)可能会做正确的事情:
#!/bin/bash
interval=5
start=$(date +%s)
while true; do
# run jobs in the background
for i in 1 2 3 4; do
"$@" &
done
# wait for all background jobs to finish
wait
# figure out how long we have to sleep
end=$(date +%s)
delta=$((start + interval - end))
# if it's positive sleep for this amount of time
if [ $delta -gt 0 ]; then
sleep $delta || exit
fi
start=$((start + interval))
done
如果将此脚本放在适当的位置并使其可执行,则可以像以下方式运行它:
run-periodically.sh imagesnap arg1 arg2
但是在测试时,我跑了:
sh run-periodically.sh sh -c "date; sleep 2"
这将导致interval
几秒钟并行运行“启动一个显示日期然后等待几秒钟的外壳程序”的四个副本。 如果您想在不同的工作中运行不同的事物,那么您可能希望将它们显式地放入此脚本或该脚本所调用的另一脚本中……
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.