컴퓨터를 부팅 한 후 10 분만에 하루에 한 번만 백업 스크립트를 실행하고 싶습니다. systemd를 사용하여 이러한 시나리오를 구축 할 수 있습니까?
echo "obnam backup" | at "now + 10 minutes"
컴퓨터를 부팅 한 후 10 분만에 하루에 한 번만 백업 스크립트를 실행하고 싶습니다. systemd를 사용하여 이러한 시나리오를 구축 할 수 있습니까?
echo "obnam backup" | at "now + 10 minutes"
답변:
참조 /lib/systemd/system/systemd-tmpfiles-clean.timer
:
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
이것은 .service
부팅 후 15 분 후에 해당 파일을 실행 한 다음 시스템이 작동하는 동안 매일 실행 됩니다. 같은 날에 여러 번 재부팅하는 경우 백업 스크립트가 아카이브의 mtime을 확인하고 그 날이 지난 날짜보다 짧은 실행을 건너 뛸 수 있습니다.
또한 IO에서 백업이 과중 할 경우 systemd.exec (5) 맨 페이지 의 IOScheduling * 지시문 을 읽는 것이 도움이 될 수 있습니다 .
재부팅 사이의 상태를 추적하지 않으므로 systemd에서 완전히 수행 할 수는 없다고 생각합니다. 당신은 easly 부팅 사용 후 10 분 실행 뭔가 예약 할 수 있습니다 systemd.timer
및 OnBootSec=
또는 OnStartupSec=
.
스크립트 자체는 오늘 이미 실행되었는지 확인해야합니다. 예를 들어 bash에서도 쉽게 구현할 수 있습니다.
#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`
[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE