Подтвердить что ты не робот

Linux Как запустить script в определенное время?

У меня есть текстовый файл , содержащий определенную дату и время. Я хочу иметь возможность запускать script в указанное в этом файле время. Как бы вы это достигли? Создайте еще один script, который работает в фоновом режиме (вид деамона) и проверяет каждую секунду, если текущее время соответствует времени в файле? Есть ли другой способ? Машина представляет собой сервер Linux, Debian wheezy. Спасибо заранее

4b9b3361

Ответ 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 - будний день