Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Mar 2016 13:21:33 +0200
From:      Esa Karkkainen <ejk@iki.fi>
To:        freebsd-questions@freebsd.org
Subject:   Re: Check which services/processes need restart after update
Message-ID:  <20160305112133.GB4778@pp.htv.fi>
In-Reply-To: <BF442EB7-5F98-4ABC-A000-A6C037BE8C9A@wellmann-engineering.eu>
References:  <BF442EB7-5F98-4ABC-A000-A6C037BE8C9A@wellmann-engineering.eu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Mar 03, 2016 at 10:07:21PM +0100, Walkenhorst, Benjamin wrote:
> Hello,

Hello,


> Only recently I was happy to discover that Debian has a tool called
> checkrestart that checks which services need to be restarted after
> an update.
> I thought that was very nice and now I am kind of wondering if there
> is something comparable for FreeBSD.

I made a small shell script, which starts the "monitored" services if the
service is not running.

It sends me an email when PID changes, if you don't want that remove or
add a comment to the line which has "diff -u etc" command.

I run this script from cron every five minutes.

Line in /etc/crontab

# grep check_service /etc/crontab
*/5	*	*	*	*	root	/root/bin/check_services

The script it self, please notice that my email client has wrapped few
lines.

# cat /root/bin/check_services
!/bin/sh
set -u
#set -x
if [ ! -e /var/run/check_services.prev ] ; then
        touch /var/run/check_services.prev || exit 1
        chown root:wheel /var/run/check_services.prev || exit 1
        chmod 0640 /var/run/check_services.prev || exit 1
fi
if [ -e /var/run/check_services.now ] ; then
        cp /dev/null /var/run/check_services.now || exit 1
else
        touch /var/run/check_services.now || exit 1
        chown root:wheel /var/run/check_services.now || exit 1
        chmod 0640 /var/run/check_services.now || exit 1
fi
for i in list of services to be monitored
do
        service $i status >> /var/run/check_services.now 2>&1
        pid="$(tail -1 /var/run/check_services.now|tr -d '.'|awk '{print
$6}')"
        if [ -z "${pid}" ] ; then
                service "${i}" start
        fi
done
unset i
diff -u /var/run/check_services.prev /var/run/check_services.now 2>&1
if cmp -s /var/run/check_services.prev /var/run/check_services.now ;
then
        :
else
        mv /var/run/check_services.now /var/run/check_services.prev ||
exit 1
fi
exit 0

-- 
"In the beginning the Universe was created. This has made a lot of
people very angry and been widely regarded as a bad move."
        -- Douglas Adams 1952 - 2001



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160305112133.GB4778>