summaryrefslogtreecommitdiffstats
path: root/jobs.d/rcS
diff options
context:
space:
mode:
Diffstat (limited to 'jobs.d/rcS')
-rw-r--r--jobs.d/rcS33
1 files changed, 33 insertions, 0 deletions
diff --git a/jobs.d/rcS b/jobs.d/rcS
new file mode 100644
index 00000000..5faef6e8
--- /dev/null
+++ b/jobs.d/rcS
@@ -0,0 +1,33 @@
+# rcS - runlevel compatibility
+#
+# This task runs the old sysv-rc startup scripts.
+
+start on startup
+stop on runlevel
+task
+
+# Note: there can be no previous runlevel here, if we have one it's bad
+# information (we enter rc1 not rcS for maintenance). Run /etc/rc.d/rc
+# without information so that it defaults to previous=N runlevel=S.
+console output
+script
+ runlevel --set S >/dev/null || true
+
+ /etc/rc.d/rc.sysinit
+ runlevel --reboot || true
+end script
+post-stop script
+ for UPSTART_EVENT in $UPSTART_EVENTS; do
+ if [ "$UPSTART_EVENT" == "startup" ]; then
+ runlevel=$(/bin/awk -F ':' '$3 == "initdefault" { print $2 }' /etc/inittab)
+ [ -z "$runlevel" ] && runlevel="3"
+ for t in $(cat /proc/cmdline); do
+ case $t in
+ -s|single|S|s) runlevel="S" ;;
+ [1-9]) runlevel="$t" ;;
+ esac
+ done
+ exec telinit $runlevel
+ fi
+ done
+end script