使用Shell编撰定时向指定API获取数据的脚本
优采云 发布时间: 2020-08-20 18:32使用Shell编撰定时向指定API获取数据的脚本
场景:这个在服务器上写定时脚本的情况十分多,比如每晚向定时往用户推送相关信息,定时清除相关数据,定时短信提醒等等。
本文的场景是采用shell定时向指定开放API获取数据。
本文使用的是crontab,可以先在终端查看是开启此服务,命令如下:
yang@master:~$ sudo service cron status
[sudo] password for yang:
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: ena
Active: active (running) since Sat 2016-08-13 08:29:16 CST; 30min ago
Docs: man:cron(8)
Main PID: 831 (cron)
CGroup: /system.slice/cron.service
└─831 /usr/sbin/cron -f
Aug 13 08:29:16 master systemd[1]: Started Regular background program processing
Aug 13 08:29:16 master cron[831]: (CRON) INFO (pidfile fd = 3)
Aug 13 08:29:16 master cron[831]: (CRON) INFO (Running @reboot jobs)
编写定时脚本
这个脚本是我们要定时器定时执行的任务,即我们要定时做什么,在这里,我是要使脚本手动采集数据,脚本如下:
#!/usr/bin/env bash
path_log="fetch_data.log"
path_stuTenSch="http://www.google.com"
code_success="200"
#get http response code
http_code=$(curl -s -o /dev/null -I -w "%{http_code}" $path_stuTenSch)
#echo "$http_code" >> $path_log
if [ "$http_code"==$code_success ]; then
echo "Status Code:$http_code, success, Resquest URL: $path_stuTenSch" >> $path_log
echo "starting..........." >> $path_log
curl $path_stuTenSch > /home/hadoop/tmp_data/users.json
echo "end----------------" >> $path_log
else
echo "Status Code:$http_code, fail, Resquest URL: $path_stuTenSch" >> $path_log
fi
编辑crontab
编辑crontab是用crontab -e执行,crontab -l来显示有什么定时器。每个定时器用一行来表示。通常情况下,有6个参数,分别为分钟,小时,天,月,周,要执行的命令,*表示任意时间,/n表示每隔n的时间进行重复。
yang@master:~$ crontab -e
*/1 * * * * /home/yang/shell/fetch_data.sh
在这里,我是每隔一分钟执行一次sh脚本。