Подскажите, пожалуйста!
Вообщем, существует острая необходимость в том, чтобы Perl-скрипт(к примеру, /var/prog/test.pl), запускающийся в rc.d корректно завершал свою работу по сигналу stop.
------------------------------------------
Привожу скрипт,запускающий test.pl в данное время
------------------------------------------
#!/bin/sh
case "$1" in
start)
/var/prog/test.pl &
;;stop)
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
;;
esac
-----------------------------------Что же мне необходимо добавить в test.pl, а также в его скрипт-запуска, приведенный мной выше???
>Подскажите, пожалуйста!
>Вообщем, существует острая необходимость в том, чтобы Perl-скрипт(к примеру, /var/prog/test.pl), запускающийся в
>rc.d корректно завершал свою работу по сигналу stop.
>------------------------------------------
>Привожу скрипт,запускающий test.pl в данное время
>------------------------------------------
>#!/bin/sh
>case "$1" in
> start)
> /var/prog/test.pl &
> ;;
>
> stop)
>
> ;;
>
> *)
> echo ""
> echo "Usage: `basename $0`
>{ start | stop }"
> echo ""
> ;;
>esac
>-----------------------------------
>
>Что же мне необходимо добавить в test.pl, а также в его скрипт-запуска,
>приведенный мной выше???Как вариант, запоминаете в каком-нибудь файле типа /var/run/test.pid номер процесса, а stop осуществлять примерно так:
kill `cat /var/run/test.pid`
В стартовых скриптах еще используется функция killproc из /etc/init.d/functions:
killproc $prog
@ARGV - читаем что передали и прибиваем процесс
я для кода-то писал так:
sub term_handler {
# делай перед завершением что хошь
exit 0;
}$SIG{TERM}=\&term_handler;
и убивал процесс kill PID_процесса
всё работало нормально
>я для кода-то писал так:
>sub term_handler {
># делай перед завершением что хошь
> exit 0;
>}
>
>$SIG{TERM}=\&term_handler;
>
>
>и убивал процесс kill PID_процесса
>всё работало нормально
А еще в секции stop скрипта, управляющего прогой на perl, вместо
kill <номер процесса>
можно написать
killall test.plПо-моему должно работать :)