LINUX.ORG.RU

Скрипы на перл прописанные в rc.local не запускаются.


0

0

в rc.local прописан запуск скрипта:
/etc/rc.d/rc.billing start

$cat /etc/rc.d/rc.billing 

#!/bin/sh
#
start ()
{
	cd /usr/local/billing/bill/
	exec ./billing.pl &
	exec ./reload_iptables.pl &
	sleep 1
	/usr/local/sbin/ulogd -d
}

stop ()
{
	killall -9 ulogd
	killall -9 billing.pl
	killall -9 reload_iptables.pl
}

restart ()
{
	stop
	sleep 1
	start
}

case "$1" in
   'start')
      start;;
   'stop')
      stop;;
   'restart')
      restart;;
   *)
      echo "usage $0 start|stop|restart" ;;
esac

в итоге ulogd запущен, а скрипты на перле billing.pl 
и reload_iptables.pl не запущенны, если запустить руками
из консоли то все запускается. Вопрос в том почему не 
запускается из rc.local точнее запускается т.к. например
таблицы из скриптов создаются, правила в iptables то же
изменяются так как должны изменятся из скриптов, но в 
списке запущенных процессов их нет.

Глупый вопрос
>exec ./billing.pl

exec заменяет текущий процесс на вызываемый, насколько я помню,
это ожидаемый эффект? по идее все что после exec не должно выполняться.

fghj ★★★★★
()
Ответ на: комментарий от Zmacs

#!/bin/sh
#
start ()
{
	/usr/local/billing/bill/billing.pl &
	/usr/local/billing/bill/reload_iptables.pl &
	sleep 1
	/usr/local/sbin/ulogd -d
}

stop ()
{
	killall -9 ulogd
	killall -9 billing.pl
	killall -9 reload_iptables.pl
}

restart ()
{
	stop
	sleep 1
	start
}

case "$1" in
   'start')
      start;;
   'stop')
      stop;;
   'restart')
      restart;;
   *)
      echo "usage $0 start|stop|restart" ;;
esac

Исправил, но ничего не поменялось :(.

stalcker
() автор топика

>но в списке запущенных процессов их нет.

А они написаны как демоны?
Если нет, то умирают вслед за смертью родит. процесса.

sdio ★★★★★
()
Ответ на: комментарий от anonymous

ls -l $TEST
-rwxr-x---  1 stalcker work 461 2006-09-24 21:30 /usr/local/billing/bill/billing.pl*
-rwxr-x---  1 stalcker work 538 2006-09-24 21:50 /usr/local/billing/bill/reload_iptables.pl*

$ head $TEST
==> /usr/local/billing/bill/billing.pl <==
#!/usr/bin/perl
use strict;
use lib "/usr/local/billing/lib/";
use billing_lib;

my $fw = "/usr/sbin/iptables";
my $b_lib = new billing_lib;

my $count = 0;


==> /usr/local/billing/bill/reload_iptables.pl <==
#!/usr/bin/perl
use strict;
use lib "/usr/local/billing/lib/";
use billing_lib;

my $b_lib = new billing_lib;

my $users_conf_file = "/usr/local/billing/conf/users_control.cnf";

&main();

Вот, хотя не понятно что это покажет.

stalcker
() автор топика
Ответ на: комментарий от sdio

Они запускаются в фоне & вроде как не дложны мереть после смерти родителя.

stalcker
() автор топика
Ответ на: комментарий от stalcker

Сделай:

script1.pl &>/root/script1.log script2.pl &>/root/script2.log

anonymous
()

perl -e <путь> или как там у perl'а...

anonymous
()

Всем спасибо, кто отклинулся. Ппроблема была в следущем - когда "демонизировал" процессы, запарился и вместо сигнала SIGHUP работал с сигналом SIGCHLD, т.е. как ошибся в самом начале так потом и парился.

stalcker
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.