Fix upstart failing because of background onos-service (ONOS-4117)

1.  Invoke karaf script in all cases (upstart, initd/systemd)

This means that onos-service now blocks, which means we need to
change onos.initd to run it in the background. Otherwise, we could
use karaf/bin/start

This should fix ONOS-4117

2. Use service onos {start/status/etc.} for upstart/init/systemd

onos-install should not invoke the new init.d script directly;
instead it should use service onos {cmd, which should work if
service is available on upstart, init.d, and systemd-based
distributions.

This should fix ONOS-4124

3. In onos.initd, check if ONOS is running.

This makes it easier to see what is going on, and it also avoids
attempting to start ONOS if it's already running.

Change-Id: I0152fd7fdcb079b25531442315d0bd69e6c7653d
diff --git a/tools/package/init/onos.initd b/tools/package/init/onos.initd
index 5aa78d1..0323f2e 100755
--- a/tools/package/init/onos.initd
+++ b/tools/package/init/onos.initd
@@ -19,13 +19,22 @@
     mkdir -p $ONOS_HOME/var 2>/dev/null && chown $ONOS_USER.$ONOS_GROUP $ONOS_HOME/var
     mkdir -p $ONOS_HOME/config 2>/dev/null && chown $ONOS_USER.$ONOS_GROUP $ONOS_HOME/config
     [ ! -h $ONOS_HOME/log ]  && ln -s $ONOS_HOME/karaf/data/log $ONOS_HOME/log || :
-    start-stop-daemon --signal INT --start --chuid $ONOS_USER \
-        --exec $ONOS_HOME/bin/onos-service --pidfile $ONOS_PID \
-        -- $ONOS_OPTS >$ONOS_HOME/var/stdout.log 2>$ONOS_HOME/var/stderr.log
+    # Start ONOS if it's not already running
+    if ! status > /dev/null; then
+        start-stop-daemon --signal INT --start --chuid $ONOS_USER \
+            --background --exec $ONOS_HOME/bin/onos-service \
+            -- $ONOS_OPTS >$ONOS_HOME/var/stdout.log 2>$ONOS_HOME/var/stderr.log
+    else
+        echo "ONOS/karaf is already running"
+    fi
 }
 
 stop () {
-    $ONOS_HOME/karaf/bin/stop
+    if status> /dev/null; then
+        $ONOS_HOME/karaf/bin/stop
+    else
+        echo "ONOS/karaf is not running"
+    fi
 }
 
 restart () {
@@ -34,6 +43,7 @@
 }
 
 status () {
+    # karaf status returns 0 if running, 1 if not
     $ONOS_HOME/karaf/bin/status
 }