ctdb-scripts: Strengthen check to see if ctdbd is running
authorMartin Schwenke <martin@meltin.net>
Mon, 10 Oct 2016 03:56:18 +0000 (14:56 +1100)
committerAmitay Isaacs <amitay@samba.org>
Fri, 14 Oct 2016 09:54:40 +0000 (11:54 +0200)
Don't just rely on the process existing.  It must be called "ctdbd".

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Autobuild-User(master): Amitay Isaacs <amitay@samba.org>
Autobuild-Date(master): Fri Oct 14 11:54:40 CEST 2016 on sn-devel-144

ctdb/config/ctdbd_wrapper

index 11ea59adbc4fd6061dae01b562790e76b7665530..8a9f554dd5f1854e3b2ff4bf8437a7799fb1026b 100755 (executable)
@@ -31,17 +31,21 @@ ctdbd="${CTDBD:-/usr/local/sbin/ctdbd}"
 # ctdbd_is_running()
 
 # Check if ctdbd is running.  ctdbd is only considered to running if
-# the PID in the PID file is active.  Return true if this is the case.
-# Print the PID regardless, since it can be used to kill stale
-# processes in the session.
+# the PID in the PID file is active and is called "ctdbd".  Return
+# true if this is the case.  Print the PID regardless, since it can be
+# used to kill stale processes in the session.
 
 ctdbd_is_running ()
 {
        if read _pid 2>/dev/null <"$pidfile" ; then
                echo "$_pid"
 
-               # Return value of kill is used
-               kill -0 "$_pid" 2>/dev/null
+               # This could be optimised with ps options -q and -h.
+               # However, -q is not generally available because it is
+               # fairly new and -h is not in some older distros.  The
+               # options below are portable.
+               _cmd=$(ps -p "$_pid" -o comm | tail -n +2)
+               [ "$_cmd" = "ctdbd" ]
        else
                # Missing/empty PID file
                return 1