|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Eugene B. Berdnikov 2:5020/400 16 Mar 2001 23:03:41 To : Alex Korchmar Subject : Re: Microsoft предлагает запретить Linux!!! -------------------------------------------------------------------------------- Alex Korchmar <Alex.Korchmar@p65.f423.n5020.z2.fidonet.org> wrote: AK> Hi Eugene B.! AK> At Wed, 14 Mar 01 13:03:28 +0300 Eugene B. Berdnikov <berd@desert.ihep.su> AK> wrote: AK> VN>>> Да никто тому sshd, который Ваш шелл будет обслуживать, этот SIGTERM не EBB>> Практика показывает, что получив SIGTERM, sshd убивает своих потомков. AK> ЧО???????????? AK> ребята, да что они там в ihep'е - в натуре, коноплю выращивают, что ли? AK> AK> Сидит человек, и уже неделю несет какой-то полнейший бред. Причем до того я AK> его считал вполне разумным. Hу эта, деградируем потихоньку... :) Я вот уже от человека "вполне разумного" доэволюционировал до того, что стал скрипты стартовые читать - вместо sh. :) И массу интересного для себя нашел. Hапример, такой фрагмент: /etc/rc.d/init.d/functions: [...] # A function to start a program. daemon() { [...] # See if it's already running. pidlist=`pidofproc $base` pid= for apid in $pidlist ; do [ -d /proc/$apid ] && pid="$pid $apid" done [ -n "$pid" ] && ps h $pid >/dev/null 2>&1 && return Hу как? Tо, что ps h всегда возвращает 0, неважно (в RH7.0 уже поправили). Забавно другое: если я вошел на эту машину по ssh, то по команде "/etc/rc.d/init.d/ssh restart" демон убьется, но _не_ перезапустится. Тоска и печаль - в тексте pidofproc(): pidofproc() { [...] # First try "/var/run/*.pid" files if [ -f /var/run/$1.pid ] ; then pid=`head -1 /var/run/$1.pid` if [ "$pid" != "" ] ; then echo $pid return 0 fi fi # Next try "pidof" pid=`pidof $1` if [ "$pid" != "" ] ; then echo $pid return 0 fi # Finally try to extract it from ps ps ax | awk 'BEGIN { prog=ARGV[1]; ARGC=1 } [...] Если я наберу эту команду "restart" 2й раз, меня просто вышибет с машины, но ничего запускаться не будет. Почему - читайте killproc() и плачьте... :) Разумеется, я предполагаю, что в скриптах написаны стандартные редхатовские конструкции "daemon sshd", "killproc sshd", "stop $0 ; start $0". Для меня тут был еще один сюрприз. Я на своих машинах разные предохранители вешал типа запасного sshd -i на нестандартном порту. Мол, standalone демон свалится - зайду через запасной ход и запущу заново. Хех, зайти-то можно, а вот запустить стандартным скриптом - фигушки: кривой daemon() не позволит. Допускаю, что Вы все это уже 10 лет знаете. А я вот не знал. И для проверки на SIGTERM зашел на первую попавшуюся машину и, не разбираясь в pid'ах, набрал ".../sshd stop". Все коннекции послетали. :) Правда, я уже покаялся: то был Солярис, и скрипты оказались не моими (логика другая), а я - дурак. Hу ладно, переживу как-нибудь. Гораздо хуже то, что в дистрибутиве РедХата идут скрипты, мягко говоря, не тем пальцем деланные... :( -- Eugene Berdnikov --- ifmail v.2.15dev5 * Origin: Institute for High Energy Physics, Protvino, Russia (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/5353ee8006f6.html, оценка из 5, голосов 10
|