Комментарии 10
systemd и upstart также поддерживают разовые задачи (Type=oneshot или task)
справедливости ради, runit тоже умеет одноразовые задачи.
0
А что именно?
0
В Stage 1? Я так понимаю, что речь шла об автоматическом разруливании зависимостей этих одноразовых задач, т.к. дальше по тексту шла фраза «с сохранением всей логики зависимостей». А этого в runit действительно в явном виде не предусмотрено, т.к. очень редко в этом есть острая необходимость.
+1
и в stage1 тоже. вообще, я имел в виду скрипт finish, который в дире с джобом. ничто не мешает там вбить свою логику, вроде sv stop $name.
например, я делал так:
например, я делал так:
#!/bin/sh
name=`basename $(dirname $(pwd)/fake)` # ugly hack
/usr/bin/sv stop $name >/dev/null 2>/dev/null # silently stop runit job after single run
0
А можно узнать зачем так сложно получать имя текущей директории (`basename $(dirname $(pwd)/fake)`), почему не просто `basename $PWD`? Какой corner case, требующий этих извращений?
+2
Это все-таки другое. Использовать инструмент не совсем по назначению, и нужно будет еще приделывать отметку и проверку того, что задача уже была выполнена. Для пары скриптов можно, а там где уже пара десятков — появляется путаница.
0
Острая необходимость мало в чем бывает, можно и вообще без init обойтись :) — из шелла фоновые процессы запустить. Дело не в том, что по другому вообще никак, а в том, что бывают неострые необходимости — чтобы было модульно, или чтобы выполнялось быстро, или чтобы логика работы показывалась четко и могла проверяться.
0
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
Параллельное выполнение зависимых задач и синхронизация с условными переменными в shell