오전 1시에 실행되고 다음 yyyy/mm/dd 형식으로 어제와 오늘의 index.html을 생성하는 크론 작업이 있습니다.
-1일을 잡고 사용자에게 보내야 합니다. 어떻게 해야 하나요?
-bash-4.2$ find /var/lib/pgsql/scripts/outfile/ -type f -name index.html
/var/lib/pgsql/scripts/outfile/2022/06/29/index.html
/var/lib/pgsql/scripts/outfile/2022/06/30/index.html
이 경우에는
/var/lib/pgsql/scripts/outfile/2022/06/29/index.html
Bash 스크립트를 사용하여 이 작업을 어떻게 수행할 수 있나요?
답변1
분명히 일련의 표현식이 필요합니다 yesterday
( 2022/06/30
귀하의 예에서는 오늘 가정).
date
이는 (GNU) 또는 bash (+4.2) 자체에 의해 생성될 수 있습니다 date -d yesterday +%Y/%m/%d
.
$ printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))"
2022/06/29
하루가 실제로 86400초이고 DST가 이를 방해하지 않는다고 가정합니다.
그러면 다음과 같은 파일의 전체 디렉터리가 표시됩니다.
dir='/var/lib/pgsql/scripts/outfile/'
name='index.html'
yest="$(printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))")"
file="$dir$yest/$name"
[[ -e "$file" ]] || exit 3
echo "$file"
cron이 사용된다는 점에 유의하십시오 sh
( 가 아님 bash
). 위의 스크립트를 사용 bash
하거나 파일에 작성된 스크립트를 bash /path/to/scriptfile
cron 에서 호출해야 합니다 sh
.