101 lines
2.6 KiB
Bash
Executable File
101 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Start the MD monitor daemon for all active MD arrays if desired.
|
|
# This script is not used under systemd.
|
|
#
|
|
# Copyright © 2001-2005 Mario Jou/3en <joussen@debian.org>
|
|
# Copyright © 2005-2009 Martin F. Krafft <madduck@debian.org>
|
|
# Distributable under the terms of the GNU GPL version 2.
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides: mdadm
|
|
# Required-Start: $local_fs $syslog
|
|
# Required-Stop: $local_fs $syslog sendsigs
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: MD monitoring daemon
|
|
# Description: mdadm provides a monitor mode, in which it will scan for
|
|
# problems with the MD devices. If a problem is found, the
|
|
# administrator is alerted via email, or a custom script is
|
|
# run.
|
|
### END INIT INFO
|
|
#
|
|
set -eu
|
|
|
|
MDADM=/sbin/mdadm
|
|
MDMON=/sbin/mdmon
|
|
RUNDIR=/run/mdadm
|
|
PIDFILE=$RUNDIR/monitor.pid
|
|
DEBIANCONFIG=/etc/default/mdadm
|
|
|
|
test -x "$MDADM" || exit 0
|
|
|
|
test -f /proc/mdstat || exit 0
|
|
|
|
START_DAEMON=true
|
|
test -f $DEBIANCONFIG && . $DEBIANCONFIG
|
|
|
|
. /lib/lsb/init-functions
|
|
|
|
is_true()
|
|
{
|
|
case "${1:-}" in
|
|
[Yy]es|[Yy]|1|[Tt]|[Tt]rue) return 0;;
|
|
*) return 1;
|
|
esac
|
|
}
|
|
|
|
case "${1:-}" in
|
|
start)
|
|
if [ -x /usr/bin/systemd-detect-virt ] && /usr/bin/systemd-detect-virt --quiet --container; then
|
|
log_daemon_msg "Not starting MD monitoring service in container"
|
|
log_end_msg 0
|
|
exit 0
|
|
fi
|
|
|
|
if is_true $START_DAEMON; then
|
|
log_daemon_msg "Starting MD monitoring service" "mdadm --monitor"
|
|
mkdir -p $RUNDIR
|
|
set +e
|
|
start-stop-daemon -S -p $PIDFILE -x $MDADM -- \
|
|
--monitor --pid-file $PIDFILE --daemonise --scan ${DAEMON_OPTIONS:-}
|
|
log_end_msg $?
|
|
set -e
|
|
fi
|
|
if [ "$(echo $RUNDIR/md[0-9]*.pid)" != "$RUNDIR/md[0-9]*.pid" ]; then
|
|
log_daemon_msg "Restarting MD external metadata monitor" "mdmon --takeover --all"
|
|
set +e
|
|
$MDMON --takeover --all
|
|
log_end_msg $?
|
|
set -e
|
|
fi
|
|
;;
|
|
stop)
|
|
if [ -f $PIDFILE ] ; then
|
|
log_daemon_msg "Stopping MD monitoring service" "mdadm --monitor"
|
|
set +e
|
|
start-stop-daemon -K -p $PIDFILE -x $MDADM
|
|
rm -f $PIDFILE
|
|
log_end_msg $?
|
|
set -e
|
|
fi
|
|
for file in $RUNDIR/md[0-9]*.pid ; do
|
|
[ ! -f "$file" ] && continue
|
|
ln -sf $file /run/sendsigs.omit.d/mdmon-${file##*/}
|
|
done
|
|
;;
|
|
status)
|
|
status_of_proc -p $PIDFILE "$MDADM" "mdadm" && exit 0 || exit $?
|
|
;;
|
|
restart|reload|force-reload)
|
|
${0:-} stop
|
|
${0:-} start
|
|
;;
|
|
*)
|
|
echo "Usage: ${0:-} {start|stop|status|restart|reload|force-reload}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|