Установленный вручную монитор на Debian Squeeze

1248
opc0de

Я запускаю Debian squeeze и хочу установить monit, проблема в том, что версия в репозитории старая и не имеет некоторых опций, которые мне нужны.

Я скачал исходный код и скомпилировал его с помощью этих команд:

 $ tar zxvf monit-x.y.z.tar.gz (were x.y.z denotes version numbers) $ cd monit-x.y.z $ ./configure (use ./configure --help to view available options) $ make && make install 

Он успешно скомпилирован, но когда я набираю

sudo service monit start 

Я получил:

monit: нераспознанный сервис

Как я могу вручную установить его как сервис? Спасибо

1

2 ответа на вопрос

3
mhost

First, you need to actually run make install using sudo in order to install it, so:

sudo make install 

Then, you need a script in /etc/init.d that starts the service. Monit comes with a generic one in the source directory called contrib/rc.monit. Below is the one that comes with the debian wheezy monit package (some paths might be different from a source compiled version and the debian one has a few extra "features" which you could incorporate).

#!/bin/sh ### BEGIN INIT INFO # Provides: monit # Required-Start: $remote_fs # Required-Stop: $remote_fs # Should-Start: $all # Should-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: service and resource monitoring daemon # Description: monit is a utility for managing and monitoring # processes, programs, files, directories and filesystems # on a Unix system. Monit conducts automatic maintenance # and repair and can execute meaningful causal actions # in error situations. ### END INIT INFO set -e . /lib/lsb/init-functions DAEMON=/usr/bin/monit CONFIG="/etc/monit/monitrc" DELAY="/etc/monit/monit_delay" NAME=monit DESC="daemon monitor" MONIT_OPTS= PID="/var/run/$NAME.pid" # Check if DAEMON binary exist [ -f $DAEMON ] || exit 0 [ -f "/etc/default/$NAME" ] && . /etc/default/$NAME # For backward compatibility, handle startup variable: if [ -n "$startup" ] then if [ "$1" = "start" ] then printf "\tPlease, use START variable in /etc/default/monit\n" printf "\tto enable/disable $NAME startup.\n" fi if [ -z "$START" ] && [ "$startup" -eq 1 ] then START="yes" fi fi # For backward compatibility, handle CHECK_INTERVALS variable: if [ -n "$CHECK_INTERVALS" ] then if [ "$1" = "start" ] then printf "\tPlease, use MONIT_OPTS variable in /etc/default/monit\n" printf "\tto specify command line options for $NAME.\n" fi MONIT_OPTS="$MONIT_OPTS -d $CHECK_INTERVALS" fi MONIT_OPTS="-c $CONFIG $MONIT_OPTS" monit_not_configured () { if [ "$1" != "stop" ] then printf "\tplease configure $NAME and then edit /etc/default/$NAME\n" printf "\tand set the \"START\" variable to \"yes\" in order to allow\n" printf "\t$NAME to start\n" fi exit 0 } monit_check_config () { # Check for emtpy config. if [ "`grep -s -v \"^#\" $CONFIG`" = "" ] then echo "empty config, please edit $CONFIG." exit 0 fi } monit_check_perms () { # Check the permission on configfile. # The permission must not have more than -rwx------ (0700) permissions. # Skip checking, fix perms instead. /bin/chmod go-rwx $CONFIG } monit_delayed_monitoring () { if [ -f $DELAY ] then printf "Warning: Please, set start delay for $NAME in config file\n" printf " and delete $DELAY file.\n" if [ ! -x $DELAY ] then printf "Warning: A delayed start file exists ($DELAY)\n" printf " but it is not executable.\n" else $DELAY & fi fi } monit_checks () { # Check if START variable is set to "yes", if not we exit. if [ "$START" != "yes" ] then monit_not_configured $1 fi # Check for emtpy configfile monit_check_config # Check permissions of configfile monit_check_perms } case "$1" in start) log_daemon_msg "Starting $DESC" "$NAME" monit_checks $1 if start-stop-daemon --start --quiet --oknodo \ --pidfile $PID --exec $DAEMON \ -- $MONIT_OPTS then log_end_msg 0 else log_end_msg 1 fi monit_delayed_monitoring ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" if start-stop-daemon --retry TERM/5/KILL/5 --oknodo --stop --quiet \ --pidfile $PID --exec $DAEMON then log_end_msg 0 else log_end_msg 1 fi ;; reload) log_daemon_msg "Reloading $DESC configuration" "$NAME" if start-stop-daemon --stop --signal HUP --quiet \ --oknodo --pidfile $PID \ --exec $DAEMON -- $MONIT_OPTS then log_end_msg 0 else log_end_msg 1 fi ;; restart|force-reload) $0 stop $0 start ;; syntax) $DAEMON $MONIT_OPTS -t ;; status) status_of_proc -p $PID $DAEMON $NAME ;; *) log_action_msg "Usage: /etc/init.d/$NAME " ;; esac exit 0 

Copy this to a file called /etc/init.d/monit and make the file executable.

You should also create the file /etc/default/monit with the following in it:

# /etc/default/monit # Defaults for monit initscript. This file is sourced by # /bin/sh from /etc/init.d/monit. # You must set this variable to yes for monit to start START=yes # Options to pass to monit #MONIT_OPTS= 

You should then be able to start it with the command you ran:

sudo service monit start 

To have it start automatically on boot, run the following to have debian insert it into the proper place in the boot up services.

insserv monit 
1
David

Просто комментарий об Ubuntu 12.04.4 и Monit:

Я сошел с ума, пытаясь выяснить, почему monit не будет работать, как рекламируется в Ubuntu 12.04.4. Оказывается, что пакет apt-getдает вам устарела. Я решил скомпилировать из источника.

Так что, если вы уже установили Monit, как я, вы можете просто скачать исходный архив и ./configure --prefix=/usrзатем make && make install.

Сценарий запуска уже в, /etc/init.dкажется, работает нормально. Таким образом, вы можете просто sudo service monit restartи вы на своем пути.

Похожие вопросы