diff --git a/clusterd/clusterd b/clusterd/clusterd index 5625d04..b38a9e5 100755 --- a/clusterd/clusterd +++ b/clusterd/clusterd @@ -654,6 +654,7 @@ sub delete_host { #----------------------------------------------------------------------- package My::NetlogReceiver; +use Sys::Syslog; our $listen_socket; our $TCP_MAX=1024; @@ -668,7 +669,7 @@ sub day { sub bigben { my $day=day(); $day le $DAY_LAST_MSG and return; - warn "NETLOG ==================================================== morning has broken ====\n"; + syslog('warning', "NETLOG ==================================================== morning has broken ====\n"); $DAY_LAST_MSG=$day; } @@ -702,8 +703,7 @@ sub receive { last if length($$bufref)<2+$l; my $msg=substr($$bufref,2,$l); $$bufref=substr($$bufref,2+$l); - $|=1; - warn "NETLOG $msg\n" unless $msg=~/NETLOG/; + syslog('warning', "NETLOG $msg\n") unless $msg=~/NETLOG/; } My::Select::reader_requeue(); } @@ -769,7 +769,6 @@ chomp($my_unixrev); our $CLUSTER_PW; our $CLUSTER_PW_FILE='/etc/clusterd.password'; -our $OLD_CLUSTER_PW_FILE='/root/clusterd.password'; our $CLUSTER_PW_TIMESTAMP=0; $ENV{'PATH'} = '/usr/local/bin:/sbin:/usr/sbin:/bin'.($ENV{PATH}?':'.$ENV{PATH}:''); # for ps , tar (gnu!) @@ -1612,24 +1611,6 @@ sub send_tcp_cp { sub sync_cluster_pw { my $st=Donald::FileInfo->lstat($CLUSTER_PW_FILE); - # upgrade : move cluster password file from /root to /etc - - if (!$st && -e $OLD_CLUSTER_PW_FILE) { - warn "upgrading cluster password file location $OLD_CLUSTER_PW_FILE -> $CLUSTER_PW_FILE\n"; - my $in=new IO::File $OLD_CLUSTER_PW_FILE,'<'; - unless (defined $in) {warn "$OLD_CLUSTER_PW_FILE: $!\n";return undef;} - my $out=new IO::File $CLUSTER_PW_FILE,O_WRONLY|O_CREAT,0600; - unless (defined $out) {warn "$CLUSTER_PW_FILE: $!\n";return undef;} - my $data; - $in->read($data,1024); - $out->write($data); - $in->close; - $out->close; - $st=Donald::FileInfo->lstat($CLUSTER_PW_FILE); - defined $st or die "$CLUSTER_PW_FILE: $!\n"; - unlink $OLD_CLUSTER_PW_FILE; - } - if ($st) { if (!defined $CLUSTER_PW or $CLUSTER_PW_TIMESTAMP != $st->mtime) { my $fh=new IO::File $CLUSTER_PW_FILE,'<'; @@ -1702,16 +1683,7 @@ our $PROG_MTIME; sub check_progfile_status { defined $PROG_FILE or $PROG_FILE=$0; my @f=lstat $PROG_FILE or return; - if (defined $PROG_MTIME) { - if ($f[9] != $PROG_MTIME) { - warn "progfile $PROG_FILE has changed - upgrade restart from version ".version_info()."\n"; - exec $PROG_FILE,'--daemon',($options{'foreground'}?'--foreground':()),($options{'syslog'}?'--syslog':()); - } - } - else { - $PROG_MTIME=$f[9]; - } - My::Select::timeout(60,\&check_progfile_status); + $PROG_MTIME=$f[9]; } sub version_info { # '20090617-155314' @@ -2047,12 +2019,7 @@ usage: $0 [options] --lsof=pattern - --kill # try to kill a running server - --daemon # start a daemon - --kill # try to kill previous server first - --foreground # stay in foreground, log to stderr - --syslog # log to syslog instead of stderr push files.... # push files over tcp @@ -2061,12 +2028,9 @@ __EOF__ use Getopt::Long; GetOptions ( - 'kill' => \$options{'kill'}, 'daemon' => \$options{'daemon'}, 'push=s' => \$options{'push'}, 'exec=s' => \$options{'exec'}, - 'foreground' => \$options{'foreground'}, - 'syslog' => \$options{'syslog'}, 'push-amd-tar' => \$options{'push_amd_tar'}, 'send-restart' => \$options{'send-restart'}, 'flush-gidcache' => \$options{'flush-gidcache'}, @@ -2111,28 +2075,13 @@ if (defined $options{'push'}) { $donald_s=new My::Select::INET(Proto=>'udp') or die "$!\n"; udp_broadcast_message($donald_s,'reexport'); } elsif (defined $options{'daemon'}) { - $options{'kill'} and Donald::Tools::kill_previous_server('clusterd') and sleep 2; - $SIG{PIPE}='IGNORE'; $donald_s=new My::Select::INET(Proto=>'udp',Broadcast=>1,LocalPort=>$UDP_PORT) or die "$!\n"; $donald_s->receive_data(\&udp_message,$donald_s); - unless ($options{'foreground'}) { - my $pid=fork; - defined $pid or die "$!\n"; - $pid and exit 0; - } - - if ($options{'syslog'} or not $options{'foreground'}) { - openlog('clusterd','pid','daemon'); - Sys::Syslog::setlogsock('unix'); # with 'native' we get EOLs in the logfile, option "noeol" doesn't work - $SIG{__WARN__} = sub { syslog('warning',@_); }; - $SIG{__DIE__} = sub { syslog('crit',@_);syslog('crit','exiting');exit 1;}; - open (STDOUT,'>','/dev/null'); - open (STDERR,'>','/dev/null'); - open (STDIN,'<','/dev/null'); - } + openlog('clusterd','pid','daemon'); + Sys::Syslog::setlogsock('unix'); # with 'native' we get EOLs in the logfile, option "noeol" doesn't work check_progfile_status(); warn "server started - ".version_info()."\n"; diff --git a/clusterd/clusterd.service b/clusterd/clusterd.service index 79f0beb..c5566ef 100644 --- a/clusterd/clusterd.service +++ b/clusterd/clusterd.service @@ -1,11 +1,9 @@ [Unit] -Description=ClusterDonald Requires=network.target After=network.target [Service] -ExecStart=/usr/sbin/clusterd --daemon --foreground --kill --syslog -StandardOutput=syslog +ExecStart=/usr/sbin/clusterd --daemon Restart=always RestartSec=10s