У меня есть текстовый файл с конкретной датой и временем. Я хочу иметь возможность запускать скрипт в то время, которое указано в этом файле. Как бы вы этого добились? Создать еще один скрипт, который работает в фоновом режиме (что-то вроде демона) и каждую секунду проверяет, совпадает ли текущее время со временем в файле? Есть другой способ? На машине стоит линукс сервер Debian wheezy. заранее спасибо
81
Ответы:
Посмотрите на следующее:
echo "ls -l" | at 07:00
Эта строка кода выполняет «ls -l» в определенное время. Это пример выполнения чего-либо (команды в моем примере) в определенное время. "at" - это команда, которую вы действительно искали. Вы можете прочитать спецификации здесь:
http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.html http://manpages.ubuntu.com/manpages/xenial/man1/at.1posix.html
Надеюсь, поможет!
источник
Can't open /var/run/atd.pid to signal atd. No atd running?
?atd
запущенный демонat
. В Manjaro OpenRC вы можете просто установитьat-openrc
и добавить службу демона atd с помощью:sudo rc-update add atd
и начать сsudo rc-service atd start
. Обычно вat
пакет уже включенаsystemd
служба (система инициализации / обслуживания по умолчанию в различных дистрибутивах Linux, включая Ubuntu), с которой его можно запуститьsudo systemctl start atd
и включить автозапуск при инициализации с помощьюsudo systemctl enable atd
.at -c
использование. Для чего это, если способ выполнить команду - передать ее в std in?Команда
at
существует специально для этой цели (в отличие от той,cron
которая предназначена для планирования повторяющихся задач).источник
$(< file)
Cron хорош для чего-то, что будет запускаться периодически, например, каждую субботу в 4 часа ночи. Также есть анакрон , который работает с отключениями питания, засыпанием и т. Д. Как и у .
Но для одноразового решения, которое не требует root или чего-либо еще, вы можете просто использовать date для вычисления секунд с начала целевого времени, а также текущего времени, затем использовать expr, чтобы найти разницу, и спать столько секунд.
источник
at
Работа будет по- прежнему планируется , даже если машина перезагружается в то же время.Обычно в Linux вы используете
crontab
для такого рода запланированных задач. Но вы должны указать время, когда вы «устанавливаете таймер» - поэтому, если вы хотите, чтобы его можно было настраивать в самом файле, вам нужно будет создать какой-то механизм для этого.Но в целом вы можете использовать, например:
Выполнял бы скрипт каждую пятницу в 1:30 (AM) Здесь:
30
это минуты1
часследующие 2 * - это
day of month
иmonth
(в указанном порядке) и5
день неделиисточник