From: Alen Grizonic Date: Thu, 18 Jun 2015 17:00:12 +0000 (+0200) Subject: PVE:Daemon start/restart with systemd X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=a526ab1cfc6adda11dd4830501b1eb8a14b2bf6d PVE:Daemon start/restart with systemd Added some lines which make it possible to stop/start/restart daemon services with pve scripts, avoiding the problem of systemd not recognizing the new status of the (re)started service processes. The scripts now rely on systemctl. Signed-off-by: Alen Grizonic --- diff --git a/src/PVE/Daemon.pm b/src/PVE/Daemon.pm index e051500..1243fc7 100644 --- a/src/PVE/Daemon.pm +++ b/src/PVE/Daemon.pm @@ -578,6 +578,16 @@ my $read_pid = sub { return $pid; }; +# checks if the process was started by systemd +my $init_ppid = sub { + + if (getppid() == 1) { + return 1; + } else { + return 0; + } +}; + sub running { my ($self) = @_; @@ -654,7 +664,11 @@ sub register_start_command { code => sub { my ($param) = @_; - $self->start($param->{debug}); + if (&$init_ppid()) { + $self->start($param->{debug}); + } else { + PVE::Tools::run_command(['systemctl', 'start', $self->{name}]); + } return undef; }}); @@ -700,7 +714,11 @@ sub register_restart_command { code => sub { my ($param) = @_; - &$reload_daemon($self, $use_hup); + if (&$init_ppid()) { + &$reload_daemon($self, $use_hup); + } else { + PVE::Tools::run_command(['systemctl', $use_hup ? 'reload-or-restart' : 'restart', $self->{name}]); + } return undef; }}); @@ -750,7 +768,11 @@ sub register_stop_command { code => sub { my ($param) = @_; - $self->stop(); + if (&$init_ppid()) { + $self->stop(); + } else { + PVE::Tools::run_command(['systemctl', 'stop', $self->{name}]); + } return undef; }});