cURL을 사용하여 JSON을 가져오는 Cronjob입니다. 파일에 쓰기 전에 응답이 비어 있지 않은지 확인하십시오.

cURL을 사용하여 JSON을 가져오는 Cronjob입니다. 파일에 쓰기 전에 응답이 비어 있지 않은지 확인하십시오.

저는 Ubuntu를 실행 중이고 원격 JSON 파일을 가져와서 서버에 쓰는(덮어쓰기) 간단한 cronjob을 가지고 있습니다.

*/15 * * * * /usr/bin/curl -m 120 -s https://path/to/remote/json.json > /store/json/here.json

그러나 서버의 JSON 파일을 덮어쓰기 전에 외부 JSON이 실제로 데이터를 반환하는지 확인해야 합니다.

이 목표를 어떻게 달성할 수 있나요? Bash에서 직접 이 작업을 수행하는 몇 가지 방법을 찾았지만 crontab에 넣으면 작동하지 않는 것 같습니다.

답변1

짧은 쉘 스크립트를 작성하고 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진짜주어진 파일의 크기가 0보다 큰 경우.

관련 정보