aboutsummaryrefslogtreecommitdiff
path: root/utilities/ovs-lib.sh.in
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-07-15 14:53:11 -0700
committerBen Pfaff <blp@nicira.com>2011-07-18 11:37:46 -0700
commit3028ce2595c86c79ebd25cf264665df400840323 (patch)
treed217b5bfe53f8bbb98d92d890f8d2cd9fa1f2768 /utilities/ovs-lib.sh.in
parenta835b061f765869ed96f278f402846ab7a571cdc (diff)
ovs-lib: Allow "status" command to work as non-root.
Diffstat (limited to 'utilities/ovs-lib.sh.in')
-rw-r--r--utilities/ovs-lib.sh.in12
1 files changed, 9 insertions, 3 deletions
diff --git a/utilities/ovs-lib.sh.in b/utilities/ovs-lib.sh.in
index 179d85e1..f53d4afd 100644
--- a/utilities/ovs-lib.sh.in
+++ b/utilities/ovs-lib.sh.in
@@ -84,6 +84,12 @@ fi
## Daemons ##
## ------- ##
+pid_exists () {
+ # This is better than "kill -0" because it doesn't require permission to
+ # send a signal (so daemon_status in particular works as non-root).
+ test -d /proc/"$1"
+}
+
start_daemon () {
priority=$1
shift
@@ -128,7 +134,7 @@ stop_daemon () {
return 1
;;
*)
- if kill -0 $pid >/dev/null 2>&1; then
+ if pid_exists $pid >/dev/null 2>&1; then
sleep $action
else
return 0
@@ -145,7 +151,7 @@ daemon_status () {
pidfile=$rundir/$1.pid
if test -e "$pidfile"; then
if pid=`cat "$pidfile"`; then
- if kill -0 "$pid"; then
+ if pid_exists "$pid"; then
echo "$1 is running with pid $pid"
return 0
else
@@ -162,5 +168,5 @@ daemon_status () {
daemon_is_running () {
pidfile=$rundir/$1.pid
- test -e "$pidfile" && pid=`cat "$pidfile"` && kill -0 "$pid"
+ test -e "$pidfile" && pid=`cat "$pidfile"` && pid_exists "$pid"
} >/dev/null 2>&1