У меня есть текстовый файл , содержащий определенную дату и время. Я хочу иметь возможность запускать script в указанное в этом файле время. Как бы вы это достигли? Создайте еще один script, который работает в фоновом режиме (вид деамона) и проверяет каждую секунду, если текущее время соответствует времени в файле? Есть ли другой способ? Машина представляет собой сервер Linux, Debian wheezy. Спасибо заранее
Linux Как запустить script в определенное время?
Ответ 1
Посмотрите на следующее:
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
Надеюсь, что это поможет!
Ответ 2
Команда at
существует специально для этой цели (в отличие от cron
, которая предназначена для планирования повторяющихся задач).
at $(cat file) </path/to/script
Ответ 3
Cron хорош для того, что будет периодически запускаться, как каждую субботу в 4 часа ночи. Там также анакрон, который работает вокруг отключения питания, сна и еще много чего. Также как в.
Но для одноразового решения, для которого не требуется root или что-то еще, вы можете просто использовать date для вычисления секунд-с-эпохи целевого времени, а также текущего времени, затем используйте expr, чтобы найти разницу, и sleep, что много секунд.
Ответ 4
Обычно в Linux вы используете crontab
для таких задач scduled. Но вы должны указать время, когда вы "настраиваете таймер" - поэтому, если вы хотите, чтобы он был настроен в самом файле, вам нужно создать какой-то механизм для этого.
Но в целом вы бы использовали, например:
30 1 * * 5 /path/to/script/script.sh
Выполнял script каждую пятницу в 1:30 (AM) Здесь:
30
- минуты
1
- час
next 2 * are day of month
и month
(в этом порядке), а 5
- будний день