The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Почему некоторые rcNG-скрипты не останавливают процесс
В ОС FreeBSD иногда появляется проблема, когда rcNG-скрипт запускает процесс 
(процесс запускается нормально, pid-файл создается, с правами все в порядке),
 но не хочет его останавливать. Например, SpamAssassin:

  # /usr/local/etc/rc.d/sa-spamd start
  Starting spamd.
  # ls -l /var/run/spamd/spamd.pid
  -rw-r--r--  1 root  spamd  6  1 авг 08:37 spamd.pid
  # /usr/local/etc/rc.d/sa-spamd stop
  spamd not running? (check /var/run/spamd/spamd.pid)

Причина проблемы не очевидна, решение находится из man ps: 
если длина аргументов больше значения переменной ядра kern.
ps_arg_cache_limit, то ps показывает не полную строку запуска процесса, 
а лишь само имя процесса в квадратных скобках. И бывают случаи (как в SpamAssassin), 
когда имя процесса не совпадает с именем в rcNG-скрипте (переменная name). 
Поэтому rcNG-скрипт не обнаруживает запущенного ним процесса в выводе ps.

Решение - увеличить значение переменной ядра kern.ps_arg_cache_limit в sysctl.conf.

Замечание:

Если в rc.conf в spamd_flags присутствует --debug, то rcNG-скрипт работать не будет, 
потому что в этом случае вывод ps axww меняется. 
Например вместо:

68514  ??  Ss     0:11,27 /usr/local/bin/spamd --siteconfigpath=/usr/local/etc/mail/spamassassin 
   -x -d -l --max-conn-per-child=128 --timeout-tcp=10 --timeout-child=300 
   --pidfile=/var/run/spamd/spamd.pid --syslog=local0 --username=spamd --groupname=spamd
   --allowed-ips=127.0.0.0/8 --listen-ip=127.0.0.1 -d -r /var/run/spamd/spamd.pid (perl5.8.8)

получаем

68514  ??  Ss     0:11,27 /usr/local/bin/perl -T -w /usr/local/bin/spamd 
   --siteconfigpath=/usr/local/etc/mail/spamassassin -x -d -l --max-conn-per-child=128 
   --timeout-tcp=10 --timeout-child=300 --pidfile=/var/run/spamd/spamd.pid --syslog=local0 
   --username=spamd --groupname=spamd --allowed-ips=127.0.0.0/8 --listen-ip=127.0.0.1 --debug 
   received-header -d -r /var/run/spamd/spamd.pid 

Решение этой проблемы - правка rc.subr, что есть дело нелегкое. И проще помнить про этот нюанс.
 
10.08.2006 , Автор: minotaur
Ключи: ps, sysctl, proccess / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / FreeBSD специфика / Установка и апгрейд FreeBSD и приложений.

Обсуждение [ RSS ]
  • 1.1, Samm (?), 15:08, 11/08/2006 [ответить]  
  • +/
    странно, стандартный sa-spamd.sh всегда работал корректно у меня без дополнительного тюнинга.
     
  • 1.2, Lancelot (?), 14:45, 13/08/2006 [ответить]  
  • +/
    Спасибо взял на заметку :)
    Еще как решение в rc. скриптах указывать переменную 'pidfile'.
     
  • 1.3, MoHaX (??), 12:49, 14/08/2006 [ответить]  
  • +/
    Ага, теперь я понял почему томкат не хотит нормально перегружаться. Спасибо.
     
  • 1.4, Planner (?), 05:58, 19/08/2006 [ответить]  
  • +/
    сам не раскопал по причине паталогической лени; спасибо большое, ткнули фейсом [-:
     
  • 1.5, dimasp (?), 12:10, 15/09/2006 [ответить]  
  • +/
    спасибо. такая же проблема со SpamAssassin иногда вылезает
     
  • 1.6, close (?), 15:06, 02/04/2007 [ответить]  
  • +/
    истчо с named'ом такая же хрень бывает
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру