mirror of
https://github.com/unraid/webgui.git
synced 2026-01-06 01:29:54 -06:00
171 lines
3.5 KiB
Bash
171 lines
3.5 KiB
Bash
#!/bin/bash
|
|
# SPDX-License-Identifier: LGPL-2.1-only
|
|
#
|
|
# Start/Stop the CGroups Rules Engine Daemon
|
|
#
|
|
# Copyright Red Hat Inc. 2008
|
|
#
|
|
# Authors: Steve Olivieri <sjo@redhat.com>
|
|
#
|
|
# cgred CGroups Rules Engine Daemon
|
|
# chkconfig: - 14 86
|
|
# description: This is a daemon for automatically classifying processes \
|
|
# into cgroups based on UID/GID.
|
|
#
|
|
# processname: cgrulesengd
|
|
# pidfile: /var/run/cgred.pid
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides: cgrulesengd
|
|
# Required-Start: $local_fs $syslog $cgconfig
|
|
# Required-Stop: $local_fs $syslog
|
|
# Should-Start:
|
|
# Should-Stop:
|
|
# Short-Description: start and stop the cgroups rules engine daemon
|
|
# Description: CGroup Rules Engine is a tool for automatically using \
|
|
# cgroups to classify processes
|
|
### END INIT INFO
|
|
|
|
sbindir=${exec_prefix}/sbin
|
|
CGRED_BIN=$sbindir/cgrulesengd
|
|
|
|
# Sanity checks
|
|
[[ -x $CGRED_BIN ]] || exit 1
|
|
|
|
#
|
|
# Source LSB routines
|
|
#
|
|
SYSLIBFILE=/etc/rc.d/init.d/functions
|
|
OLDSYSLIBFILE=/etc/init.d/functions
|
|
if [[ -x $SYSLIBFILE ]] ; then
|
|
# shellcheck disable=SC1090
|
|
source $SYSLIBFILE
|
|
elif [[ -x $OLDSYSLIBFILE ]] ; then
|
|
# shellcheck disable=SC1090
|
|
source $OLDSYSLIBFILE
|
|
log_warning_msg() ( warning "$@" ; printf "\n" 1>&2 ; )
|
|
log_failure_msg() ( failure "$@" ; printf "\n" 1>&2 ; )
|
|
log_success_msg() ( success "$@" ; printf "\n" 1>&2 ; )
|
|
else
|
|
log_warning_msg() ( printf "warning:%s\n" "$@" 1>&2 ;)
|
|
log_failure_msg() ( printf "failure:%s\n" "$@" 1>&2 ;)
|
|
log_success_msg() ( printf "success:%s\n" "$@" 1>&2 ;)
|
|
fi
|
|
|
|
# Read in configuration options.
|
|
if [[ -f "/etc/cgred.conf" ]] ; then
|
|
# shellcheck disable=SC1091
|
|
source /etc/cgred.conf
|
|
OPTIONS="$NODAEMON $LOG"
|
|
if [[ -n "$LOG_FILE" ]]; then
|
|
OPTIONS="$OPTIONS --logfile=$LOG_FILE"
|
|
fi
|
|
if [[ -n "$SOCKET_USER" ]]; then
|
|
OPTIONS="$OPTIONS -u $SOCKET_USER"
|
|
fi
|
|
if [[ -n "$SOCKET_GROUP" ]]; then
|
|
OPTIONS="$OPTIONS -g $SOCKET_GROUP"
|
|
fi
|
|
else
|
|
OPTIONS=""
|
|
fi
|
|
|
|
# For convenience
|
|
processname=cgrulesengd
|
|
servicename=cgred
|
|
lockfile="/var/lock/subsys/$servicename"
|
|
pidfile=/var/run/cgred.pid
|
|
|
|
start()
|
|
{
|
|
echo -n $"Starting CGroup Rules Engine Daemon: "
|
|
if [[ -f "$lockfile" ]]; then
|
|
echo "$servicename is already running with PID $(cat ${pidfile})"
|
|
return 0
|
|
fi
|
|
num=$(grep "cgroup" /proc/mounts | awk '$3=="cgroup"' | wc -l)
|
|
if [[ "$num" -eq 0 ]]; then
|
|
echo
|
|
echo $"Cannot find cgroups, is cgconfig service running?"
|
|
return 1
|
|
fi
|
|
daemon --check $servicename --pidfile $pidfile $CGRED_BIN $OPTIONS
|
|
retval=$?
|
|
echo
|
|
if [[ $retval -ne 0 ]]; then
|
|
return 7
|
|
fi
|
|
if ! touch "$lockfile"; then
|
|
return 1
|
|
fi
|
|
pidof "$processname" > $pidfile
|
|
return 0
|
|
}
|
|
|
|
stop()
|
|
{
|
|
echo -n $"Stopping CGroup Rules Engine Daemon..."
|
|
if [[ ! -f $pidfile ]]; then
|
|
#log_success_msg
|
|
return 0
|
|
fi
|
|
killproc -p $pidfile -TERM "$processname"
|
|
retval=$?
|
|
echo
|
|
if [[ $retval -ne 0 ]]; then
|
|
return 1
|
|
fi
|
|
rm -f "$lockfile" "$pidfile"
|
|
return 0
|
|
}
|
|
|
|
RETVAL=0
|
|
|
|
# See how we are called
|
|
case "$1" in
|
|
start)
|
|
start
|
|
RETVAL=$?
|
|
;;
|
|
stop)
|
|
stop
|
|
RETVAL=$?
|
|
;;
|
|
status)
|
|
status -p $pidfile $servicename
|
|
RETVAL=$?
|
|
;;
|
|
restart)
|
|
stop
|
|
start
|
|
RETVAL=$?
|
|
;;
|
|
condrestart)
|
|
if [[ -f "$lockfile" ]]; then
|
|
stop
|
|
start
|
|
RETVAL=$?
|
|
fi
|
|
;;
|
|
reload|flash)
|
|
if [[ -f "$lockfile" ]]; then
|
|
echo $"Reloading rules configuration..."
|
|
kill -s 12 "$(cat ${pidfile})"
|
|
RETVAL=$?
|
|
#if [[ $RETVAL -eq 0 ]] ; then
|
|
# log_success_msg ""
|
|
#else
|
|
# log_failure_msg ""
|
|
#fi
|
|
else
|
|
echo "$servicename is not running."
|
|
fi
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
|
|
RETVAL=2
|
|
;;
|
|
esac
|
|
|
|
exit $RETVAL
|