/lib/lsb/init-functions.d/40-systemd is in systemd 229-4ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | # -*-Shell-script-*-
# /lib/lsb/init-functions
_use_systemctl=0
if [ -d /run/systemd/system ]; then
prog=${0##*/}
service="${prog%.sh}.service"
# Don't try to run masked services. Don't check for errors, if
# this errors, we'll just call systemctl and possibly explode
# there.
state=$(systemctl -p LoadState show $service 2>/dev/null)
[ "$state" = "LoadState=masked" ] && exit 0
# Redirect SysV init scripts when executed by the user
if [ $PPID -ne 1 ] && [ -z "${init:-}" ] && [ -z "${_SYSTEMCTL_SKIP_REDIRECT:-}" ]; then
case $(readlink -f "$0") in
/etc/init.d/*)
_use_systemctl=1
# Some services can't reload through the .service file,
# but can through the init script.
if [ "$(systemctl -p CanReload show $service 2>/dev/null)" = "CanReload=no" ] && [ "${1:-}" = "reload" ]; then
_use_systemctl=0
fi
;;
esac
else
export _SYSTEMCTL_SKIP_REDIRECT="true"
fi
fi
systemctl_redirect () {
local s
local rc
local prog=${1##*/}
local command=$2
case "$command" in
start)
s="Starting $prog (via systemctl)"
;;
stop)
s="Stopping $prog (via systemctl)"
;;
reload|force-reload)
s="Reloading $prog configuration (via systemctl)"
;;
restart)
s="Restarting $prog (via systemctl)"
;;
esac
service="${prog%.sh}.service"
# avoid deadlocks during bootup and shutdown from units/hooks
# which call "invoke-rc.d service reload" and similar, since
# the synchronous wait plus systemd's normal behaviour of
# transactionally processing all dependencies first easily
# causes dependency loops
if ! OUT=$(systemctl is-system-running 2>/dev/null) && [ "$OUT" != "degraded" ]; then
sctl_args="--job-mode=ignore-dependencies"
fi
[ "$command" = status ] || log_daemon_msg "$s" "$service"
/bin/systemctl $sctl_args $command "$service"
rc=$?
[ "$command" = status ] || log_end_msg $rc
return $rc
}
if [ "$_use_systemctl" = "1" ]; then
# Some init scripts use "set -e" and "set -u", we don't want that
# here
set +e
set +u
if [ "x$1" = xstart -o \
"x$1" = xstop -o \
"x$1" = xrestart -o \
"x$1" = xreload -o \
"x$1" = xforce-reload -o \
"x$1" = xstatus ] ; then
systemctl_redirect $0 $1
exit $?
fi
fi
|