Обсуждение: Systemd

time lords
В плюсы systemd это уже идет с натяжкой. Этот функционал можно реализовать простым скриптом.
time lords
Еще позволяет отказаться от sh как язык для написания демонов, что открывает дорожку по оптимизации.
Ну почему же с натяжкой? Если уже избавляться от bash то уж на широкую ногу. Инструмент и предназначен полностью контролировать демонов без доп скриптов…
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Ну почему же с натяжкой? Если уже избавляться от bash то уж на широкую ногу. Инструмент и предназначен полностью контролировать демонов без доп скриптов…

Как избавление от sh я имел в виду скрипты /etc/rc.d, которые запускают демоны. Скрипты перезапуска уже пользовательские. Тут systemd является довольно таки хорошим велосипедом.

P.S. Наверное, я криворукий. Прибавку по времени не вижу. Как стартовали у меня иксы и все остальное пол часа, так и стартуют :)
верно, но для этого приходится копировать и долго писать проверки для скрипта, а тут тотчже механизм, только все нужные проверки и фильтры идут в комплекте, да еще и пишутся в одну строку (ну например Before=…). Помоему тоже очевидно, что уж если и убирать sh из инициализации , то системд одно из вменяемых решений.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
while true; do 
команда 
done

Простей скрипт перезапуска любой программы, который я использую. Не многим сложнее строчки в systemd. Но указывать это в юните с запуском удобнее.
Сам придумал или кто подсказал? )))
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
time lords
while true; do 
команда 
done

Простей скрипт перезапуска любой программы, который я использую. Не многим сложнее строчки в systemd. Но указывать это в юните с запуском удобнее.
эт даже для перезапузка рабочего???
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
time lords
while true; do 
команда 
done

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

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

P.S.
Вот вам пример моего скрипта, который я использую на дебиановском сервере для старта, остановки, и автоматического перезапуска программы. Которая, к слову, сама по себе снабжена защитой от “зависаний” с помощью “watchdog” на основе SIGALRM и постоянного обновления таймера. Опущены только начальные дебиановские заголовки и задание конкретных параметров.
get_pid()
{
 PID=''
 [ -f $NPID ] && read P < $NPID
 [ -n "$P" ] && [ -d "/proc/$P" ] && PID=$P && return 0
 return 1
}
start_daemon()
{
 echo -n "Starting $NDESC ... "
 if get_pid ; then
  echo "Already running"
  exit 1
 fi
 su -c "setsid $0 cycle &" - $USER
 limit=50
 for((i=0;i<limit;i++))
 do
  sleep 0.1
  get_pid && echo "PID:$PID" && break
 done
 ((i==limit)) && echo "failed?"
}
stop_daemon()
{
 echo -n "Stopping $NDESC ... "
 [ -f "$NLOCK" ] && rm $NLOCK
 get_pid && kill -HUP $PID
 limit=10
 for((i=0;i<limit;i++))
 do
  sleep 0.1
  if get_pid ; then true
  else
   echo "done."
   break
  fi
 done
 ((i==limit)) && kill -KILL $PID && echo "killed."
}
case "$1" in
cycle)
 exec 1>&- 2>&- 0>&-
 echo -n > $NLOCK
 while [ -f "$NLOCK" ]
 do
  $NBIN
 done
 exit 0
 ;;
start)
 start_daemon
 ;;
stop)
 stop_daemon
 ;;
restart)
 stop_daemon
 start_daemon
 ;;
*)
 echo "Usage: $NNAME start|restart|stop" >&2
 exit 1
 ;;
esac
C потомками чихня. Полная. Но этот скрипт в процессе без потомков порождает всего два - выполнение самого скрипта и программа. При зависании убиваете прорамму по пиду - она упала и запустилась заново. Если мне совсем не надо видеть эту программу, то убиваем скрипт потом программу.

Кстати. В случае использование systemd потомки будут падать вместе с основной программой.

P.S. Мой скрипт короче.

эт даже для перезапузка рабочего???
Нет.
Сам придумал или кто подсказал? )))
Пол года назад искал скрит под никсы для автоматического перезапуска фоновой программы. Тогда нашел в гугле
Опа. После перехода на systemd у мен отвалился русский в консоли. Не заметил сразу
time lords
C потомками чихня. Полная. Но этот скрипт в процессе без потомков порождает всего два - выполнение самого скрипта и программа. При зависании убиваете прорамму по пиду - она упала и запустилась заново. Если мне совсем не надо видеть эту программу, то убиваем скрипт потом программу.

Кстати. В случае использование systemd потомки будут падать вместе с основной программой.

P.S. Мой скрипт короче.

эт даже для перезапузка рабочего???
Нет.
Сам придумал или кто подсказал? )))
Пол года назад искал скрит под никсы для автоматического перезапуска фоновой программы. Тогда нашел в гугле
ты след. раз так не пугай, а клади скрипт, я вот не до пер сразу, что “под командой” имелось ввиде тело скрипта, вероятно снабженное средствами или приемами выявления повисшей/убитой программы ;)
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
 
Зарегистрироваться или войдите чтобы оставить сообщение.