You may want to use the anacron.
From its man page
anacron - runs commands periodically
anacron [-s] [-f] [-n] [-d] [-q] [-t anacrontab] [-S spooldir] [job] ...
anacron [-S spooldir] -u [-t anacrontab] [job] ...
anacron -T [-t anacrontab]
Anacron can be used to execute commands periodically, with a frequency specified in days. Unlike
cron(8), it does not assume that the machine is running continuously. Hence, it can be used on
machines that aren't running 24 hours a day, to control daily, weekly, and monthly jobs that are usu‐
ally controlled by cron.
The Ubuntu community HowTo: https://help.ubuntu.com/community/CronHowto
Simply put the executable script file in the
Touch the script file:
sudo touch /etc/cron.daily/scriptfile
cron.daily if it is a daily job).
sudo anacron -f -d
-f Force execution of the jobs, ignoring the timestamps.
-d Don’t fork to the background. In this mode, Anacron will output
informational messages to standard error, as well as to syslog.
The output of jobs is mailed as usual.
Anacron messages in the log:
grep anacron /var/log/syslog
Anacron keeps timestamps in the
/var/spool/anacron/. If you remove
cron.monthly files from there, anacron will execute daily, weekly or monthly scripts at the next startup.