我需要在 Linux 上下载超过 30k 的页面,并想象我可以用一个简单的 bash 脚本 + wget 来做到这一点,这就是我想出的:
#!/bin/bash
start_time=$(date +%s)
for i in {1..30802}
do
echo "Downloading page http://www.domain.com/page:$i"
wget "http://www.domain.com/page:$i" -q -o /dev/null -b -O pages/$i
running=$(ps -ef | grep wget | wc -l)
while [ $running -gt 1000 ]
do
running=$(ps -ef | grep wget | wc -l)
echo "Current running $running process."
sleep 1;
done
done
while [ $running -gt 1 ]
do
running=$(ps -ef | grep wget | wc -l)
echo "Waiting for all the process to end..."
sleep 10;
done
finish_time=$(date +%s)
echo "Time duration: $((finish_time - start_time)) secs."
有些页面没有完全下载!
由于上面的代码将使 1k wget 并行运行进程并等到它降低以添加更多进程,难道是我实际上用尽了所有可用的互联网链接?
我怎样才能使它更可靠,以确保页面实际上被正确下载?
编辑:
- 我听说 curl 是下载页面的更好选择,这是真的吗?