LINUX.ORG.RU

запуск скрипта через промежуток времени

 ,


0

2

Была такая тема (https://www.linux.org.ru/forum/general/168656, сейчас она в архиве). И там предложили использовать крон, что логично, но... А если мне надо запустить скрипт через 5 минут после старта системы? Можно конечно в крон добавить

*/5 * * * * root /usr/libexec/atrun
и каждую 5, 10, 15, 20, 25... минуту будет стартовать скрипт. Вроде нормально при условии,что система загрузилась ровно в 0, 5,10... минут, а если она загрузилась на 4 минуте, то скрипт сработает уже через минуту. Как быть,если нужно не каждые 5 минут, а через 5 минут? Если нужно однократное выполнение через 5 минут после каждого старта системы? Сейчас кроме старта скрипта в фоне из rc.local и «sleep 5m» других идей нет.

Или я что-то не недопонимаю?

PS 5 минут взято для примера, может 1 час, 2 часа любое время.

/etc/systemd/system/somescript.timer


[Unit]
Desription=Starts a script at system boot

[Timer]
OnBootSec=5m

[Install]
WantedBy=multi-user.target

/etc/systemd/system/somescript.service

[Unit]
Desription=Starts a script

[Service]
Type=oneshot
ExecStart=/bin/bash /path/to/script

redgremlin ★★★★★
()

А если мне надо запустить скрипт через 5 минут после старта системы?
PS 5 минут взято для примера, может 1 час, 2 часа любое время.

man sleep

уже советовали?

Или я что-то не недопонимаю?

тип того. да.

novitchok ★★★★★
()

в rc.local вызывать скрипт с &, а в скрипте sleep :)

anonymous
()

man at

если оно еще актуально или вообще релевантно.

Deleted
()

а вообще как-то корявато условие.
надо более лучше более планировать.

systemd unit в котором будет at. :-)

Deleted
()
Ответ на: комментарий от redgremlin

Итого имеем в случае чего целых 3 точки отказа, вот помню мне основная идея systemd нравилась — унификация --, но глядя на подобные конструкции немного тошно, может оно и продуманно и правильно всё делать именно так в сложных случаях, но,,, но

Dron ★★★★★
()
Ответ на: комментарий от Dron

основная идея systemd

Очевидно основная идея systemd в том чтоб все платили за саппорт красношапке ;)

anonymous
()
Ответ на: комментарий от Deleted

Не надо недооценивать нынешнею медицину. Укольчики нужных веществ локализуют точки отказа на раз. У меня вот организм B12 перестал усваивать, но, благодаря укольчикам, я всё ещё жив.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

вместо одной строки в rc.local 2 неочевидных ini-файла. таки прекрасная работа, flawless victory

Ford_Focus ★★★★★
()
Ответ на: комментарий от redgremlin

3 файла, 3 чтения и интерпретации файлов, 3 точки отказа на уровне обработки файлов. Я кода обработки юнитов/сервисов не видел поэтому и предположил наихудшее, но это просто моё мнение, не более того, но и не менее.

Dron ★★★★★
()
Ответ на: комментарий от redgremlin

Лучшей эпитафии sysvinit даже специально не придумаешь.

Наоборот, это замечательная эпитафия системд. Ибо нормальный инит предоставляет бесконечные возможности, а системд огораживает всё, что только можно.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

нормальный инит предоставляет бесконечные возможности, а системд огораживает всё, что только можно

Это мантра такая?

anonymous
()

А если мне надо запустить скрипт через 5 минут после старта системы?

#! /bin/bash
at now + 5 minutes <<EOF
myscript.sh 
EOF

В какой-нибудь автоисполняемый файл. Ну там etc/profile, ~/.Xinitrc или подобное

Csandriel_forever
()
Ответ на: комментарий от Csandriel_forever

Я не уверен что здесь правильно воспользовался «here» синтаксисом, вот проще вариант и надежнее

at now +5 minutes -f ~/myscript.sh

Кстати, может умельцы подскажут как правильно оформлять herein для at-расписаний? Очень сложно нагуглить этот сраный at

Csandriel_forever
()
Ответ на: комментарий от redgremlin

Bwa-ha-ha, systemd haters, we won this battle!!

Решение ненужной задачи ненужным приложением. :-)

Вместо того, чтобы проверить что-то и выполнить, тупо 5 минут ждать зачем-то. А, вдруг, мало ?

AS ★★★★★
()
Ответ на: комментарий от redgremlin

systemd
два файла
на одну(!) команду
виндо-стайл синтаксис

Блевотненько.

Кстати а как эти два файла между собой связаны? Через название файла до расширения? Вот насрать в руки тому кто допускает взаимодействие через неявные связи. Нафига вообще разброс мелких фрагментов инструкций на тыщи осколков? Потому что в редхате тупые? Нет, так считать — было бы ошибкой. Ответ, логичный и исчерпывающий, только один: так задумывалось затем чтобы пользователь не мог вручную контролировать все это барахло. Только затем чтобы отжать у пользователя контроль над системой в пользу автоматики

Csandriel_forever
()
Ответ на: комментарий от Dron

Какой смысл бояться пока она не пришла? Какой смысл бояться когда она уже пришла? Какой смысл бояться неизбежного? Всякое яйцо рано или поздно разбивается, и в этом нет трагедии; главное чтобы не о край сковороды.

Что касается «точек отказа» в теле, то человек пока не придумал ни одной саомообучающейся, регенерирующейся и самовоспроизводящейся системы. Критиковать Творца легко, пусть попробует намутит хоть что-то близко подобное, тогда и смеет для критики клюв разверзать.

Csandriel_forever
()
Ответ на: комментарий от Csandriel_forever

И не забыть atd включить. А то хрен его знает, может systemd и его сожрал.

Csandriel_forever
()
Ответ на: комментарий от AS

Решение ненужной задачи

Ну кто-то же добавил в crontab семантику с @reboot за много лет до systemd, значит, не такая уж и ненужная штука.

Вместо того, чтобы проверить что-то и выполнить

Так systemd тоже умеет.

redgremlin ★★★★★
()
Ответ на: комментарий от Csandriel_forever

Кстати а как эти два файла между собой связаны? Через название файла до расширения?

Если очень хочется можно указать явно.

surefire ★★★
()

А если мне надо запустить скрипт через 5 минут после старта системы?

И зачем такое может понадобиться?

Уж не для того ли чтоб дождаться пока вся система окончательно загрузится?

Если ответ «да» — эта цель достигается другими средствами:

Правильное выставление зависимости юнитов (и правильный способ сообщения юнитов о том что ready=1 )

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от redgremlin

Ну кто-то же добавил в crontab семантику с @reboot за
много лет до systemd, значит, не такая уж и ненужная штука.

Заметь: не в init, увеличивая его монстрообразность.

AS ★★★★★
()
Ответ на: комментарий от Stanson

Ибо нормальный инит предоставляет бесконечные возможности

Бесконечные возможность одного юнита — отнимают какие-то возможности у другого юнита, в той же самой системе.

Но я пытаюсь донести НЕ якобы суть о том что якобы «в одной системе все юниты должны быть равны» (это не так! Не равны!)...

...а то что — если нет строгого регулирования возможностей каждого юнита (правила! Строгие рамки!) — то ты значит ты не можешь гарантировать что каждый из юнитов сможет получить все возможности какие хочется для этого юнита.

Определяя правила (рамки) — ты гарантируешь что в рамках этих правил — каждый юнит получает нужные ему возможности, не отнимая возможностей у других юнитов

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 3)
Ответ на: комментарий от Csandriel_forever

Кстати а как эти два файла между собой связаны? Через название файла до расширения?

В данном случае — да, возможно явное указание.

Вот насрать в руки тому кто допускает взаимодействие через неявные связи.

Тебе столько не съесть. Подавляющее большинство софта позволяет не задавать явно умолчательные значения.

Нафига вообще разброс мелких фрагментов инструкций на тыщи осколков?

Понятия не имею. А кто этим занимается и какое это отношение имеет к сабжу?

так задумывалось затем чтобы пользователь не мог вручную контролировать все это барахло

Кхм, «это барахло» контролировать вручную на порядок легче скриптовой лапши, так что не знаю, кто там чего планировал.

виндо-стайл синтаксис

Во-первых, key=value существовало задолго до винды, винда туда только секции добавила. Во-вторых, зная любовь разработчиков винды к заимствованию идей, я сильно сомневаюсь в том, что это дополнение придумали именно они. И last but not least, даже если это сугубо их изобретение, то с какого перепугу это обязательно что-то плохое? Кстати, сейчас в самой винде таким форматом уже почти никто не пользуется, тогда как для fdo это основной формат, так что сейчас это линукс-стайл формат :)

два файла
на одну(!) команду

Не на команду, а на одну задачу системного администрирования. Теперь можно штатными средствами делать enable/disable таймеру (напомни мне, какими штатными средствами sysvinit можно сделать disable строчке в crontab?), юнит можно использовать в зависимостях других юнитов, код возврата команды будет доступен в systemctl status, команду можно будет выполнять через systemctl start, ей можно указывать квоты, дополнительные условия запуска и тому подобное. Да даже человекочитаемый description уже большой полюс — собъёт тебя завтра автобус и новый сисадмин по по дному выхлопу systemctl --list-units уже поймёт, что это и для чего это нужно, а не будет вынужден бегать по fs, читая тут и там раскиданные скрипты.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

(напомни мне, какими штатными средствами
sysvinit можно сделать disable строчке в crontab?)

Зачем это нужно в init ??

AS ★★★★★
()
Ответ на: комментарий от AS

Заметь: не в init

Да, я заметил эту костыльность — @reboot стаф явно находится в компетенции инита, в большинстве реализаций которого есть хоть какие-то средства управления зависимостями и включением/выключением сервисов, которых у крона нету.

увеличивая его монстрообразность

Ну, после выкидывания из инита десятка тьюринг полных языков программирования, можно кой-чего полезного и добавить, всё равно до монструозности скриптолапши даже близко подойти не удастся.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

всё равно до монструозности скриптолапши даже близко подойти не удастся.

Она не имеет отношения к init.

AS ★★★★★
()
Ответ на: комментарий от AS

Потому что управлением тем, что запускается при старте системы относится к компетенции инита. Когда в это начинают вмешиваться другие подсистемы, начинается бардак.

redgremlin ★★★★★
()
Ответ на: комментарий от AS

Имеет самое прямое отношение. На чистом init невозможно построить хоть сколь-нибудь вменяемую систему управления сервисами, поэтому с давних пор это управление строилось с помощью шелскриптов. Но сам чистый шел тоже не слишком для этого годился, поэтому обмазывался ещё кучей утилит.

redgremlin ★★★★★
()
Ответ на: комментарий от user_id_68054

И зачем такое может понадобиться?

Попробую догадаться: оп решил воспитать кого-то из родственников. Либо следить за сестричкой. Может грабить снимки с экрана, когда мама лазит. В общем он не для себя старается.

ТС, я прав?

Csandriel_forever
()
Ответ на: комментарий от redgremlin

всё равно до монструозности скриптолапши даже близко подойти не удастся.

В глаза лицемерить это надо особый талант. Если инитскрипты это лапша, то юнит-скрпиты это манка. И если инитскрпиты могут обрабатываться как автоматически так и вручную, то юнит-манка может обрабатываться ТОЛЬКО автоматически. Именно за этим она и нашинкована.

Csandriel_forever
()
Ответ на: комментарий от redgremlin

Кхм, «это барахло» контролировать вручную на порядок легче скриптовой лапши, так что не знаю, кто там чего планировал.

Ты бы мог это рассказать бабке в кедах которая не видела линукса в глаза, или тому ерохину, которому не с чем сравнивать. Да и сам ты имеешь право рассуждать на эту тему только если тебе есть с чем сравнивать. А тебе есть? Мне вот есть, слака по сравнению с «юзерофильной» сюзей — и даже чуть менее юзерофильным дебом — просто апофеоз простоты и ясности, прозрачности и прямоты.

Csandriel_forever
()
Ответ на: комментарий от Csandriel_forever

если инитскрпиты могут обрабатываться как автоматически так и вручную

не. вручную особо не получается.

когда в ручную пытаешься что-то запускать — то в итоге скрипт отрабатывает в другой среде (с другими переменными окружения, другим cgroup и т д)..

user_id_68054 ★★★★★
()
Ответ на: комментарий от redgremlin

А кто этим занимается и какое это отношение имеет к сабжу?

Что такое юниты systemd? Это по сути скрипты. Но предельно фрагментированные и растертые в муку. Если ты не заметил. Я напомню: systemd обещал «избавление от скриптов». Но он избавил от читаемых и понятных скриптов, от самодостаточных и понятных скриптов, заменив каждый скрипт systemV десятками скриптов «unit», по два скрипта НА КАЖДУЮ КОМАНДУ, как ты продемонстрирвоал итт. Упрощение, да?

Csandriel_forever
()
Ответ на: комментарий от user_id_68054

не. вручную особо не получается.

Может у тебя не получается, но во всяком случае когда контекст полностью вмещается в один файл, когда вся задача обозрима в одном окошке, это по крайней мере возможно. А когда у тебя одна задача разбросана на десятки файлов, неясно между собой связанных — это вообще не возможно.

Csandriel_forever
()
Ответ на: комментарий от redgremlin

Я даже не буду тебе предлагать переконфигурировать хотя бы один ранлевел вручную, без помощи systemd/ Я тебя просто попрошу ХОТЯ БЫ системный журнал без него прочитать. Да, не зря системный журнал утратил текстовый вид. Это тоже сделано затем чтобы без systemd ты не то что упрвлять системой, но даже узнать что в ней происходит — не мог без него. И плевать что журнал затем и существует, чтобы читать его на незапущенной системе, на проблемной системе. Тепрь, с systemd, журнал читается ТОЛЬКО если у тебя все в порядке. Не загрузился? — Целуй в сраку или мудохайся и пердолься с чрутами.

Рабы systemd не видят абсурда на поверхности. Оно плавает наверху и воняет, а они оттуда пьют и утверждают что вкусно. Со стороны даже погано на это смотреть, позорно принадлежать к этому виду, физиологически.

Csandriel_forever
()
Ответ на: комментарий от Csandriel_forever

Тепрь, с systemd, журнал читается ТОЛЬКО если у тебя все в порядке. Не загрузился? — Целуй в сраку

Как в винде. ДОСТИГЛИ!

Csandriel_forever
()
Ответ на: комментарий от user_id_68054

другим cgroup

Можно поинтересоваться нахера оно надо? Это одна из тех проблем которая создана затем чтобы ее решал systemd? Я вот погуглил буквально «cgroup slackware» и не нашел НИЧЕГО. ЧСХ УМВР. Зачем оно?

Csandriel_forever
()
Ответ на: комментарий от znenyegvkby

Ты меня с кем-то сравниваешь? Я не знаю о ком речь а потому не знаю как это воспринимать, как лесть или оскорбление. По умолчанию оскорбление. Ты чего людям хамишь?

Csandriel_forever
()

Если нужно однократное выполнение

man at

man_of_motley ★★
()
Ответ на: комментарий от Csandriel_forever

И если инитскрпиты могут обрабатываться как автоматически так и вручную, то юнит-манка может обрабатываться ТОЛЬКО автоматически

Я ничего не понял.

Именно за этим она и нашинкована

Опять это слово. Что оно значит?

Да и сам ты имеешь право рассуждать на эту тему только если тебе есть с чем сравнивать. А тебе есть?

Я 15 лет разгребал скрипты, так что есть.

слака

Мне доводилось админить доставшуюся по наследству слаку. После пары лет таки с превеликим удовольствием заменил её на нормальный дистрибутив и утвердился во мнении, что все слакваристы — наркоманы.

Что такое юниты systemd? Это по сути скрипты.

Что?

Но предельно фрагментированные и растертые в муку

Что?

Если ты не заметил

Да, я из тех людей, которые не видят того, чего нет. Представляешь себе, есть люди, которые не употребляют лсд.

заменив каждый скрипт systemV десятками скриптов «unit»

Бред Сивой Кобылы. Обратись уже к наркологу, а?

по два скрипта НА КАЖДУЮ КОМАНД

запуск скрипта через промежуток времени (комментарий)

redgremlin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.