Browse Source

all startup files use the same pid file; all startup files remove pid file on exit

Costa Tsaousis (ktsaou) 6 years ago
parent
commit
d8ef6e0095
4 changed files with 17 additions and 3 deletions
  1. 4 1
      system/netdata-freebsd.in
  2. 3 1
      system/netdata-init-d.in
  3. 6 1
      system/netdata-lsb.in
  4. 4 0
      system/netdata.service.in

+ 4 - 1
system/netdata-freebsd.in

@@ -6,7 +6,8 @@
 name=netdata
 rcvar=netdata_enable
 
-pidfile="@localstatedir_POST@/run/netdata.pid"
+piddir="@localstatedir_POST@/run/netdata"
+pidfile="${pidfile}/netdata.pid"
 
 command="@sbindir_POST@/netdata"
 command_args="-P ${pidfile}"
@@ -23,11 +24,13 @@ savedb_cmd="netdata_savedb"
 
 netdata_prestart()
 {
+	[ ! -d "${piddir}" ] && mkdir -p "${piddir}"
 	return 0
 }
 
 netdata_poststop()
 {
+	rm "${pidfile}"
 	return 0
 }
 

+ 3 - 1
system/netdata-init-d.in

@@ -14,7 +14,8 @@
 
 DAEMON="netdata"
 DAEMON_PATH=@sbindir_POST@
-PIDFILE=@localstatedir_POST@/run/$DAEMON.pid
+PIDFILE_PATH=@localstatedir_POST@/run/netdata
+PIDFILE=$PIDFILE_PATH/$DAEMON.pid
 DAEMONOPTS="-P $PIDFILE"
 STOP_TIMEOUT="60"
 
@@ -25,6 +26,7 @@ LOCKFILE=/var/lock/subsys/$DAEMON
 service_start()
 {
 	[ -x $DAEMON_PATH ] || exit 5
+	[ ! -d $PIDFILE_PATH ] && mkdir -p $PIDFILE_PATH
 	echo -n "Starting $DAEMON..."
 	daemon $DAEMON_PATH/$DAEMON $DAEMONOPTS
 	RETVAL=$?

+ 6 - 1
system/netdata-lsb.in

@@ -20,7 +20,8 @@ ${DEBIAN_SCRIPT_DEBUG:+ set -v -x}
 
 DAEMON="netdata"
 DAEMON_PATH=@sbindir_POST@
-PIDFILE=@localstatedir_POST@/run/$DAEMON.pid
+PIDFILE_PATH=@localstatedir_POST@/run/netdata
+PIDFILE=$PIDFILE_PATH/$DAEMON.pid
 DAEMONOPTS="-P $PIDFILE"
 
 test -x $DAEMON_PATH/$DAEMON || exit 0
@@ -32,6 +33,10 @@ cd /
 umask 022
 
 service_start() {
+	if [ ! -d $PIDFILE_PATH ]; then
+		mkdir -p $PIDFILE_PATH
+	fi
+	
 	log_daemon_msg "Starting real-time performance monitoring" "netdata"
 	start_daemon -p $PIDFILE $DAEMON_PATH/$DAEMON $DAEMONOPTS
 	RETVAL=$?

+ 4 - 0
system/netdata.service.in

@@ -1,6 +1,8 @@
 # SPDX-License-Identifier: GPL-3.0+
 [Unit]
 Description=Real time performance monitoring
+
+# append here other services you want netdata to wait for them to start
 After=network.target httpd.service squid.service nfs-server.service mysqld.service mysql.service named.service postfix.service chronyd.service
 
 [Service]
@@ -9,9 +11,11 @@ User=netdata
 Group=netdata
 RuntimeDirectory=netdata
 RuntimeDirectoryMode=0775
+PIDFile=@localstatedir_POST@/run/netdata/netdata.pid
 ExecStart=@sbindir_POST@/netdata -P @localstatedir_POST@/run/netdata/netdata.pid -D -W set global 'process scheduling policy' 'keep' -W set global 'OOM score' 'keep'
 ExecStartPre=/bin/mkdir -p @localstatedir_POST@/cache/netdata
 ExecStartPre=/bin/chown -R netdata:netdata @localstatedir_POST@/cache/netdata
+ExecStopPost=[ -f @localstatedir_POST@/run/netdata/netdata.pid ] && rm @localstatedir_POST@/run/netdata/netdata.pid
 PermissionsStartOnly=true
 
 # saving a big db on slow disks may need some time