# Apply sysctl settings, including files in /etc/sysctl.d
apply_sysctl() {
- if [ -x /lib/systemd/systemd-sysctl ]; then
- /lib/systemd/systemd-sysctl
- return
- fi
-
local file
- for file in /usr/lib/sysctl.d/*.conf; do
- [ -f /run/sysctl.d/${file##*/} ] && continue
- [ -f /etc/sysctl.d/${file##*/} ] && continue
- test -f "$file" && sysctl -q -e -p "$file"
- done
- for file in /run/sysctl.d/*.conf; do
- [ -f /etc/sysctl.d/${file##*/} ] && continue
- test -f "$file" && sysctl -q -e -p "$file"
- done
for file in /etc/sysctl.d/*.conf; do
test -f "$file" && sysctl -q -e -p "$file"
done
return 1
}
-# check if SERVICE is present in systemd and ACTION is valid systemctl command
-# returns false if systemd is disabled or not active
-is_systemd_service() {
- local SERVICE=$1 ACTION=$2
-
- [ "$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 | \
- stop | \
- reload | \
- restart | \
- try-restart | \
- reload-or-restart | \
- reload-or-try-restart | \
- isolate | \
- kill | \
- is-active | \
- status | \
- show | \
- reset-failed | \
- enable | \
- disable | \
- is-enabled | \
- reenable | \
- preset | \
- mask | \
- unmask | \
- link | \
- load | \
- snapshot | \
- delete | \
- set-environment | \
- unset-environment )
- ;;
- *)
- #echo "Not valid systemd command"
- return 1
- esac
-
- [ -x /bin/systemd_booted ] || return 1
- /bin/systemd_booted || return 1
-
- /bin/systemctl show "$SERVICE".service | grep -q LoadError= && return 1 || return 0
-}
-
status_all() {
- local SERVICE TYPE has_systemd
-
- if [ "$USE_SYSTEMD" != "no" ] && [ -x /bin/systemd_booted ] && /bin/systemd_booted; then
- has_systemd=1
- else
- unset has_systemd
- fi
-
+ local SERVICE TYPE
cd ${SERVICEDIR}
for SERVICE in *; do
case "${SERVICE}" in
*)
if ! is_ignored_file "${SERVICE}" \
&& [ -x "${SERVICEDIR}/${SERVICE}" ]; then
- if [ "$has_systemd" ] && [ -f /lib/systemd/system/${SERVICE}.service ]; then
- # D for SystemD
- TYPE='D'
- else
- # S for SysVinit
- TYPE='S'
- fi
+ # S for SysVinit
+ TYPE='S'
if ! grep -qs "\Wstatus)" "$SERVICE"; then
printf " %s %-60s %s\n" "$TYPE:[?]" "$SERVICE:" "unknown"
continue
[ service_name [ command | --full-restart ] ]"
SERVICE=
-USE_SYSTEMD=
if [ -d /etc/rc.d/init.d ]; then
SERVICEDIR="/etc/rc.d/init.d"
export SYSTEMCTL_SKIP_REDIRECT=1
shift
;;
- --no-systemd)
- USE_SYSTEMD=no
- shift
- ;;
*)
if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then
status_all
esac
done
-if is_systemd_service "${SERVICE}" "${ACTION}"; then
- 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
+if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
exec env -i LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS}
else
echo "${SERVICE}: unrecognized service" >&2