Files
webgui/etc/rc.d/rc.cgred

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