Да, cron
будет запускать задание, запланированное на определенное время, только если компьютер включен в это время. Он работает так, что каждую минуту он проверяет все запланированные задания cron, чтобы увидеть, соответствуют ли их поля времени текущей минуте, и если да, то запускает задание. Если нет, он пропускается. Нет концепции "сохранения" выполнения задания на более позднее время.
В вашей ситуации вы можете использовать файл маркера, чтобы указать последний раз, когда задание было запущено. Создайте небольшой скрипт или программу, которая выглядит следующим образом (это синтаксис псевдо-Bash):
if (marker file was last modified > 1 week ago); then
run the job
touch marker file
fi
и вы можете установить этот сценарий как задание cron, которое будет запускаться каждый день, каждый час или даже каждую минуту - так часто, как вам нужно, чтобы он запускался хотя бы раз в неделю в течение времени, когда у вас включен компьютер.