URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 60565
[ Назад ]

Исходное сообщение
"Корректное завершение Perl-скрипта"

Отправлено confeti , 03-Окт-05 09:10 
Подскажите, пожалуйста!
Вообщем, существует острая необходимость в том, чтобы 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-скрипта"
Отправлено newser , 03-Окт-05 09:41 
>Подскажите, пожалуйста!
>Вообщем, существует острая необходимость в том, чтобы 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`


"Корректное завершение Perl-скрипта"
Отправлено jonatan , 03-Окт-05 09:47 
В стартовых скриптах еще используется функция killproc из /etc/init.d/functions:
killproc $prog

"Корректное завершение Perl-скрипта"
Отправлено Skif , 03-Окт-05 13:15 

@ARGV - читаем что передали и прибиваем процесс

"Корректное завершение Perl-скрипта"
Отправлено DogEater , 03-Окт-05 16:22 
я для кода-то писал так:
sub term_handler {
# делай перед завершением что хошь
    exit 0;
}

$SIG{TERM}=\&term_handler;


и убивал процесс kill PID_процесса
всё работало нормально


"Корректное завершение Perl-скрипта"
Отправлено ejik , 03-Окт-05 17:04 
>я для кода-то писал так:
>sub term_handler {
># делай перед завершением что хошь
>    exit 0;
>}
>
>$SIG{TERM}=\&term_handler;
>
>
>и убивал процесс kill PID_процесса
>всё работало нормально


А еще в секции stop скрипта, управляющего прогой на perl, вместо
kill <номер процесса>
можно написать
killall test.pl

По-моему должно работать :)