Задание Crontab начинается через 1 минуту после @reboot
45
Нужен скрипт, выполняемый при каждой перезагрузке за +1 минуту. Я разместил запись, @rebootно это слишком рано для моего сценария. Как выполнить это когда-нибудь после перезагрузки?
Почему так рано ? Может быть, сценарий инициализации был бы более подходящим (с учетом зависимостей, например, этот сценарий должен быть настроен в первую очередь для настройки сети )?
sr_
Мой сценарий должен быть выполнен после всех остальных, последнее короткими словами
Yurij73
так как ваша работа должна выполняться после всего и поскольку концепция всего достаточно изменчива (добавление нового приложения autostart @ reboot не так уж и редко), я думаю, что вы должны поместить свою работу в сценарии rc в Таким образом, серверы вашей цели. Помещение вашей задачи в конец задач, указанных в /etc/rc.local, обычно является тем, что вы хотите, но в зависимости от конфигурации загрузки вашей системы, это может не выполняться всегда. Итак, проверьте это и посмотрите, работает ли он для вас.
MelBurslan
Похоже, дело в Upstart?
Nafg
Ответы:
69
Сценарий предназначен для запуска только через одну минуту после загрузки или может использоваться в другое время? В первом случае вы можете добавить sleep 60в начало вашего скрипта, или во втором случае добавить его в файл crontab:
@reboot sleep 60 && my_script.sh
Как уже указывалось sr_, возможно, вы решаете эту проблему неправильно, и правильный сценарий init.d или rc.d был бы более надежным решением.
Или используйте параметр командной строки, чтобы настроить задержку (например, script -s Xкоторая будет переводиться sleep Xвнутрь скрипта).
Петер
Могу ли я применить это к файлу taskrunner в /etc/init.d/?
Андрес Анхель
@AndresAngel - прости, я не знаю. Я использую FreeBSD, который не имеет taskrunner, и, в этом отношении,/etc/init.d
D_Bye
на моем rhel7 сон вообще не работает, он спит вечно и никогда не возвращается.
Inder R Singh
15
Например, если вам нужно выполнить что-то после перезагрузки, когда сеть станет доступной, вы можете написать системный модуль, который будет выполняться в нужное время (конечно, это будет работать только в системах с systemd).
Для этого создайте файл /etc/systemd/system/my_script.serviceсо следующим содержимым:
@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.
... с добавленной оговоркой, что если вы действительно хотите запустить его после всех остальных вещей, вы должны проверить, как это сделать в init, который использует ваша ОС.
Ответы:
Сценарий предназначен для запуска только через одну минуту после загрузки или может использоваться в другое время? В первом случае вы можете добавить
sleep 60
в начало вашего скрипта, или во втором случае добавить его в файл crontab:Как уже указывалось sr_, возможно, вы решаете эту проблему неправильно, и правильный сценарий init.d или rc.d был бы более надежным решением.
источник
script -s X
которая будет переводитьсяsleep X
внутрь скрипта).taskrunner
, и, в этом отношении,/etc/init.d
Например, если вам нужно выполнить что-то после перезагрузки, когда сеть станет доступной, вы можете написать системный модуль, который будет выполняться в нужное время (конечно, это будет работать только в системах с systemd).
Для этого создайте файл
/etc/systemd/system/my_script.service
со следующим содержимым:Затем выполните:
Вы сделали!
источник
Я бы использовал
at
. Как в:... с добавленной оговоркой, что если вы действительно хотите запустить его после всех остальных вещей, вы должны проверить, как это сделать в init, который использует ваша ОС.
источник