daemon-util: provide rotate_logs and rotate_all_logs actions
authorApollon Oikonomopoulos <apoikos@gmail.com>
Tue, 23 Jul 2013 14:21:31 +0000 (17:21 +0300)
committerGuido Trotter <ultrotter@google.com>
Tue, 23 Jul 2013 14:43:58 +0000 (16:43 +0200)
Modify daemon-util to allow sending SIGHUP to one or all daemons. This is meant
as a utility function to be used in logrotate definitions.

Signed-off-by: Apollon Oikonomopoulos <apoikos@gmail.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

daemons/daemon-util.in

index 9481dc0..2be14e9 100644 (file)
@@ -311,6 +311,34 @@ stop_all() {
   done
 }
 
+# SIGHUP a process to force re-opening its logfiles
+rotate_logs() {
+  if [[ "$#" -lt 1 ]]; then
+    echo 'Missing daemon name.' >&2
+    return 1
+  fi
+
+  local name="$1"; shift
+  local pidfile=$(_daemon_pidfile $name)
+  local daemonexec=$(_daemon_executable $name)
+
+  if type -p start-stop-daemon >/dev/null; then
+    start-stop-daemon --stop --signal HUP --quiet \
+      --pidfile $pidfile
+  else
+    _ignore_error killproc \
+      -p $pidfile \
+      $daemonexec -HUP
+  fi
+}
+
+# SIGHUP all processes
+rotate_all_logs() {
+  for i in $(list_stop_daemons); do
+    rotate_logs $i
+  done
+}
+
 # Reloads the SSH keys
 reload_ssh_keys() {
   @RPL_SSH_INITD_SCRIPT@ restart