Вы говорите о том, чтобы этот бег проводился неделями, не так ли? Таким образом, мы должны учитывать, что система будет перезагружена, и ее нужно запускать без присмотра. Короче говоря, вам нужны некоторые средства для обеспечения того, чтобы сценарий запускался по крайней мере один раз в неделю, даже когда никто не был вокруг. Параметры выглядеть следующим образом
Вариант 1 (худший)
Вы установить напоминание для себя и вы входите в каждой неделе и запустить скрипт. Хотя вы можете быть надежными, как человек, это не позволяет вам отправиться в отпуск. Кроме того, это противоречит нашему принципу «когда вокруг нет никого».
Вариант 2 (хорошо)
Вы можете фон процесс (./once-a-week.sh &
), но это не будет надежным в течение долгого времени. Помимо прочего, если система перезапустится, ваш скрипт не будет работать, и вы не узнаете.
Вариант 3 (лучше)
Для этого, чтобы быть надежным в течение нескольких недель один из вариантов является демоном сценарий. Более подробное обсуждение этого вопроса см .: Best way to make a shell script daemon?
Вам необходимо убедиться, что демон запускается после перезагрузки или сбоя системы. Для более подробного обсуждения по этому вопросу см: Make daemon start up with Linux
Вариант 4 (лучший)
Вы не сказали нет cron
, но это действительно лучший вариант. В частности, он не будет использовать системные ресурсы в течение 6 дней, 23 часов и 59 минут, когда ему не нужно работать. Кроме того, он, естественно, устойчив к перезагрузкам и тому подобному. Таким образом, я вынужден сказать, что создание записи кронтаба вроде следующего будет мой главный голосом: @weekly /full/path/to/script
Если вы выбираете вариант 2 или 3 выше, вам нужно будет внести изменения в сценарий, чтобы содержать переменная номера недели (date +%V
), в которой сценарий успешно завершил свой прогон. Проблема в том, что просто наличие в памяти означает, что она не будет сохранена после перезагрузки.
Чтобы сделать любую из вышеперечисленных функций более эластичной, лучше всего создать каталог, в котором вы можете сохранить файл для работы в качестве семафора (например, week21.txt
) или файл для хранения состояния последнего запуска. Что-то вроде once-a-week.state
, к которому можно было бы написать значение при запуске:
date +%V > once-a-week.state # write the week number to a file
Тогда для чтения значения, вы бы:
file="/path/to/once-a-week.state" # the file where the week number is stored
read -d $'\x04' name < "$file"
echo "$name"
Затем нужно будет проверить, если номер недели соответствует этим номер текущей недели и обрабатывать необходимые действия на основе соответствия или нет.
'cron' может быть хорошим местом для начала. – Jakuje
Почему нет cron? Он был разработан именно для этой цели: напишите любой скрипт, который вы хотите, и пусть cron возьмет на себя ответственность за планирование его выполнения. –
Я искренне интересуюсь, почему вы не можете использовать cron? – Harry