Changeset 5
- Timestamp:
- 11/20/07 00:37:11 (3 years ago)
- Files:
-
- sys_alive.pl (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sys_alive.pl
r4 r5 77 77 78 78 use Proc::Daemon; 79 use Proc::PID_File;79 use File::Pid; 80 80 use Sys::Syslog qw(:standard :macros); 81 81 … … 107 107 my %infos = LireFichier(); 108 108 my %ignore; 109 my %pid = ( 110 obj => undef, 111 file => $main::mode_demon{'pid_file'} || '/var/run/sys_alive.pid', 112 value => 0, 113 ); 109 114 110 115 my $term = $ENV{'TERM'} ? '' : 'TERM=vt100; export TERM;'; # on simule un terminal si la variable d'environnement n'est pas définie … … 124 129 sys_alive(); 125 130 } 126 exit;127 131 128 132 # mode demon 129 133 sub mode_demon { 130 my $current_pid; 131 eval { $current_pid = hold_pid_file($main::mode_demon{'pid_file'} || '/var/run/sys_alive.pid'); }; 132 WriteLog('Erreur : ProblÚme en accédant au fichier pid : '.$@, 1) if $@; 133 WriteLog('Erreur : Sys_alive est déjà lancé en mode démon (pid='.$current_pid.')', 1) if $current_pid; 134 WriteLog('Sys_alive lancé en mode démon (pid='.$$.')'); 134 135 $pid{'obj'} = File::Pid->new({ 136 file => $pid{'file'}, 137 pid => $$, 138 }); 139 140 if (-e $pid{'file'}) { 141 my $current_pid; 142 eval { $current_pid = $pid{'obj'}->running(); }; 143 WriteLog('Erreur : ProblÚme en accédant au fichier pid : '.$@, 1) if $@; 144 WriteLog('Erreur : Sys_alive est déjà lancé en mode démon (pid='.$current_pid.')', 1) if $current_pid; 145 } 146 147 if ($pid{'value'} = $pid{'obj'}->write()) { 148 WriteLog('Sys_alive lancé en mode démon (pid='.$pid{'value'}.')'); 149 } else { 150 WriteLog('Erreur : ProblÚme en écrivant le fichier pid : '.$@, 1) if $@; 151 } 152 135 153 while(1) { 136 154 sys_alive(); … … 707 725 } 708 726 # ================================================================= 727 728 # END : appelé à la fin du script : supprime le fichier pid si besoin 729 sub END { 730 if ($main::mode_demon{'actif'} and $pid{'obj'} and $pid{'value'}) { 731 $pid{'obj'}->remove(); 732 WriteLog('Sys_alive stoppé en mode démon (pid='.$pid{'value'}.')'); 733 } 734 } # fin de END
