我有一个由shell脚本执行的curl命令集合。现在我想要的是所有这些命令必须以固定的时间间隔执行(这对于每个curl url都是不同的)所以我想要做的是异步调用
wait [sec]
命令并执行不同等待期间的不同功能,如
启动5个计时器,一个120s,2个30s,3个3000s等。 然后,一旦它们完成,我想触发附加到每个超时的处理程序函数的执行。 我可以在javascript和nodejs中轻松完成,因为它们是事件驱动的编程语言。但我对shell脚本知之甚少。那么,我怎样才能实现这个或hotto在shell脚本中进行这样的异步调用? 我不知道我是否足够清楚,如果我不是,我还应该提到其他什么细节?
答案 0 :(得分:2)
要试验的东西:
delayed_ajax() {
local url=$1
local callback=$2
local seconds=$3
sleep $seconds
curl -s "$url" | "$callback"
}
my_handler() {
# Read from stdin and do something.
# E.g. just append to a file:
cat >> /tmp/some_file.txt
}
for delay in 120 30 30 3000 3000; do
delayed_ajax http://www.example.com/api/something my_handler $delay &
done
答案 1 :(得分:0)
您还可以使用&
符号将此任务置于后台:
sleep 14 && wget http://yoursitehere.com &
sleep 18 && wget http://yoursitehere.com &
sleep 44 && wget http://yoursitehere.com &
这将创建一个后台任务,该任务休眠一段固定的时间,然后运行命令。它不会等待每个任务完成。
&&
表示如果前一项没有错误完成,请执行下一项。