使用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脚本。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线