Я хочу начать задание записи в точное время. Как я понимаю, cron гарантирует выполнение задания в течение одной минуты.
Одним из возможных решений является запуск задания cron раньше, чем дождаться точного времени. Какие у меня есть другие возможности?
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать at. По крайней мере, man-страница 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
, чтобы дождаться изменения минут.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать at. По крайней мере, man-страница 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
, чтобы дождаться изменения минут.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать at. По крайней мере, man-страница 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
, чтобы дождаться изменения минут.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать at. По крайней мере, man-страница 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
, чтобы дождаться изменения минут.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать at. По крайней мере, man-страница 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
, чтобы дождаться изменения минут.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать в
. По крайней мере, man-страница в
говорит, что вы можете использовать довольно точное время, включая секунды. Вы можете проверить это, добавив в
задание, которое записывает время, например, сценарий оболочки, запущенный
date & gt; ~ / at_test
Если вы идете с cron-маршрутом, date +% s
является вашим другом.
Например
#! / bin / bash target_time = 1298301898 let wait_time = target_time -dat +% s`, если [$ wait_time -gt 0]; затем sleep wait_time fi # Выполнить свой код
При таком подходе ваша следующая задача - выяснить, как определить target_time. Если вы всегда знаете, что хотите запустить его в следующую минуту, вы можете использовать
sleep 2 # Избегайте работы на xx: 59, если cron запускается немедленно. let wait_time = 60 -date +% M` sleep wait_time
, чтобы ждать, пока минута не изменится.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать в
. По крайней мере, man-страница в
говорит, что вы можете использовать довольно точное время, включая секунды. Вы можете проверить это, добавив в
задание, которое записывает время, например, сценарий оболочки, запущенный
date & gt; ~ / at_test
Если вы идете с cron-маршрутом, date +% s
является вашим другом.
Например
#! / bin / bash target_time = 1298301898 let wait_time = target_time -dat +% s`, если [$ wait_time -gt 0]; затем sleep wait_time fi # Выполнить свой код
При таком подходе ваша следующая задача - выяснить, как определить target_time. Если вы всегда знаете, что хотите запустить его в следующую минуту, вы можете использовать
sleep 2 # Избегайте работы на xx: 59, если cron запускается немедленно. let wait_time = 60 -date +% M` sleep wait_time
, чтобы ждать, пока минута не изменится.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать в
. По крайней мере, man-страница в
говорит, что вы можете использовать довольно точное время, включая секунды. Вы можете проверить это, добавив в
задание, которое записывает время, например, сценарий оболочки, запущенный
date & gt; ~ / at_test
Если вы идете с cron-маршрутом, date +% s
является вашим другом.
Например
#! / bin / bash target_time = 1298301898 let wait_time = target_time -dat +% s`, если [$ wait_time -gt 0]; затем sleep wait_time fi # Выполнить свой код
При таком подходе ваша следующая задача - выяснить, как определить target_time. Если вы всегда знаете, что хотите запустить его в следующую минуту, вы можете использовать
sleep 2 # Избегайте работы на xx: 59, если cron запускается немедленно. let wait_time = 60 -date +% M` sleep wait_time
, чтобы ждать, пока минута не изменится.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать в
. По крайней мере, man-страница в
говорит, что вы можете использовать довольно точное время, включая секунды. Вы можете проверить это, добавив в
задание, которое записывает время, например, сценарий оболочки, запущенный
date & gt; ~ / at_test
Если вы идете с cron-маршрутом, date +% s
является вашим другом.
Например
#! / bin / bash target_time = 1298301898 let wait_time = target_time -dat +% s`, если [$ wait_time -gt 0]; затем sleep wait_time fi # Выполнить свой код
При таком подходе ваша следующая задача - выяснить, как определить target_time. Если вы всегда знаете, что хотите запустить его в следующую минуту, вы можете использовать
sleep 2 # Избегайте работы на xx: 59, если cron запускается немедленно. let wait_time = 60 -date +% M` sleep wait_time
, чтобы ждать, пока минута не изменится.
Самый простой способ - поставить задачу cron, чтобы начать ее минуту раньше, а затем добавить время по своему усмотрению.
Вы также можете использовать в
. По крайней мере, man-страница в
говорит, что вы можете использовать довольно точное время, включая секунды. Вы можете проверить это, добавив в
задание, которое записывает время, например, сценарий оболочки, запущенный
date & gt; ~ / at_test
Если вы идете с cron-маршрутом, date +% s
является вашим другом.
Например
#! / bin / bash target_time = 1298301898 let wait_time = target_time -dat +% s`, если [$ wait_time -gt 0]; затем sleep wait_time fi # Выполнить свой код
При таком подходе ваша следующая задача - выяснить, как определить target_time. Если вы всегда знаете, что хотите запустить его в следующую минуту, вы можете использовать
sleep 2 # Избегайте работы на xx: 59, если cron запускается немедленно. let wait_time = 60 -date +% M` sleep wait_time
, чтобы ждать, пока минута не изменится.