]> git.pld-linux.org Git - projects/rc-scripts.git/blobdiff - service
/sys is likely already mounted, fgrep /proc/filesystems
[projects/rc-scripts.git] / service
diff --git a/service b/service
index 470e72eb9a91c75f30ff24ae2e53a905bee6c4df..337465709b829e450180dd84e83d44222c857f22 100755 (executable)
--- a/service
+++ b/service
@@ -23,6 +23,14 @@ is_systemd_service() {
 
        [ "$USE_SYSTEMD" = "no" ] && return 1
 
+       # if we are called from systemd itself, because some .service specified
+       # invocation via /sbin/service. this avoids loops
+       # detect this via CMDLINE var, which has leaked from geninitrd
+       if [ -n "$CMDLINE" ]; then
+               echo >&2  "Warning: CMDLINE env set, likely you are defining .service to use /sbin/service, please use /etc/rc.d/init.d/<SERVICE> instead"
+               return 1
+       fi
+
        case "$ACTION" in
        # list obtained as: man systemctl | grep N.*A.*M.*E
        start | \
@@ -177,8 +185,8 @@ while [ $# -gt 0 ]; do
 done
 
 if is_systemd_service "${SERVICE}" "${ACTION}"; then
-       echo >&2 "Redirecting to /bin/systemctl ${ACTION} ${SERVICE}.service ${OPTIONS}"
-       exec /bin/systemctl ${ACTION} ${SERVICE}.service ${OPTIONS}
+       echo >&2 "Redirecting to /bin/systemctl --output=cat ${ACTION} ${SERVICE}.service ${OPTIONS}"
+       exec /bin/systemctl --output=cat ${ACTION} ${SERVICE}.service ${OPTIONS}
 elif [ -x "${SERVICEDIR}/${SERVICE}" ]; then
        exec env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS}
 else
This page took 0.027313 seconds and 4 git commands to generate.