![使用 cURL 获取 JSON 的 Cronjob。在写入文件之前检查响应是否不为空](https://linux22.com/image/156090/%E4%BD%BF%E7%94%A8%20cURL%20%E8%8E%B7%E5%8F%96%20JSON%20%E7%9A%84%20Cronjob%E3%80%82%E5%9C%A8%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6%E4%B9%8B%E5%89%8D%E6%A3%80%E6%9F%A5%E5%93%8D%E5%BA%94%E6%98%AF%E5%90%A6%E4%B8%8D%E4%B8%BA%E7%A9%BA.png)
我正在运行 Ubuntu,并有一个简单的 cronjob 来获取远程 JSON 文件并将其(覆盖)写入服务器。
*/15 * * * * /usr/bin/curl -m 120 -s https://path/to/remote/json.json > /store/json/here.json
但是,我需要确保外部 JSON 在覆盖服务器上的 JSON 文件之前实际返回数据。
我怎样才能实现这个目标?我找到了一些直接在 bash 中执行此操作的方法,但当我放入 crontab 时似乎不起作用。
答案1
编写一个简短的 shell 脚本并从 crontab 调用该脚本。
该脚本可能看起来像
#!/bin/sh
PATH=/usr/bin:$PATH
cd /store/json || exit 1
if curl -m 120 -s https://path/to/remote/json.json >here.json.tmp &&
[ -s here.json.tmp ]
then
mv here.json.tmp here.json
else
rm here.json.tmp
fi
测试-s
是真的如果给定文件的大小大于零。