Saya ingin menjalankan skrip cadangan 10 menit setelah mem-boot mesin saya tetapi hanya sekali sehari. Apakah mungkin untuk membangun skenario seperti itu dengan systemd?
echo "obnam backup" | at "now + 10 minutes"
Saya ingin menjalankan skrip cadangan 10 menit setelah mem-boot mesin saya tetapi hanya sekali sehari. Apakah mungkin untuk membangun skenario seperti itu dengan systemd?
echo "obnam backup" | at "now + 10 minutes"
Jawaban:
Lihat /lib/systemd/system/systemd-tmpfiles-clean.timer
:
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Ini menjalankan .service
file yang sesuai 15 menit setelah boot dan kemudian setiap hari saat sistem menyala. Jika Anda menyalakan ulang beberapa kali di hari yang sama, Anda dapat meminta skrip cadangan memeriksa waktu arsip dan lewati proses tersebut jika sudah berumur kurang dari satu hari.
Juga, jika cadangan Anda akan berat pada IO, mungkin akan bermanfaat untuk membaca tentang arahan penjadwalan IOS * di halaman systemd.exec (5) .
Saya tidak berpikir itu mungkin untuk melakukan ini sepenuhnya di systemd karena tidak melacak keadaan apa pun antara reboot. Anda dapat dengan mudah menjadwalkan sesuatu untuk dijalankan 10 menit setelah boot menggunakan systemd.timer
dan OnBootSec=
atau OnStartupSec=
.
Script itu sendiri harus memeriksa apakah sudah berjalan hari ini atau belum. Ini dapat dengan mudah diimplementasikan bahkan dalam bash, misalnya:
#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`
[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE
Jika Anda tidak menutup telepon pada 10 menit setelah boot, Anda dapat:
[Unit]
Description=...
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
OnCalendar=daily
membuatnya berjalan setiap tengah malam, Persisten=true
saat boot jika ada setidaknya satu menjalankan tidak terjawab.