Как начать работу в точное время?
Я хочу начать работу по записи в точное время. Как я понимаю, cron гарантирует только начало работы в течение минуты.
Одним из возможных решений является запуск задания cron раньше и ожидание точного времени. Какие еще возможности у меня есть?
1 ответ
Самый простой способ - запустить cron и запустить его на минуту раньше, а затем добавить время самостоятельно.
Вы также можете использовать at
, По крайней мере, справочная страница at
говорит, что вы можете использовать довольно точное время, включая секунды. Вы можете проверить это, добавив at
задание, которое записывает время, например, запуск сценария оболочки
date > ~/at_test
Если вы идете по маршруту cron, date +%s
твой друг.
Например
#!/bin/bash
target_time=1298301898
let wait_time=target_time-`date +%s`
if [ $wait_time -gt 0 ]; then
sleep wait_time
fi
# Execute your code
При таком подходе ваша следующая задача - выяснить, как определить target_time. Если вы всегда знаете, что хотите запустить его в следующую минуту, вы можете использовать
sleep 2 # Avoid running on xx:59, if cron starts immediately.
let wait_time=60-`date +%M`
sleep wait_time
ждать, пока минутные изменения.