我正试图从Mac上的单个bash脚本同时启动imagesnap
的多个实例。此外,在运行脚本时,最好通过用户输入给出(一些)参数。
我连接了4个网络摄像头,希望以给定的间隔从每个摄像头拍摄一系列图像。作为bash脚本的绝对初学者,我不知道从哪里开始搜索。我已经测试过4个imagesnap实例在从终端手动运行时工作得很好,但仅此而已
总之,我希望制作一个bash脚本:
- 运行多个imagesnap实例
- 为imagesnap的一些参数提供了用户输入
- 理想情况下,在(几乎)同一时间启动所有imagesnap实例
--编辑--
经过思考,我对如何使用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
秒并行运行四个"启动一个显示日期的shell,然后等待几秒钟"的副本。如果你想在不同的作业中运行不同的东西,那么你可能想把它们明确地放进这个脚本中,或者可能放进另一个脚本中,这个脚本称之为…