From owner-freebsd-questions@freebsd.org Sat Mar 5 11:29:10 2016 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 905B6A09FCF for ; Sat, 5 Mar 2016 11:29:10 +0000 (UTC) (envelope-from ekarkkai@pp.htv.fi) Received: from welho-filter4.welho.com (welho-filter4.welho.com [83.102.41.26]) by mx1.freebsd.org (Postfix) with ESMTP id 1E3ACFD6 for ; Sat, 5 Mar 2016 11:29:09 +0000 (UTC) (envelope-from ekarkkai@pp.htv.fi) Received: from localhost (localhost [127.0.0.1]) by welho-filter4.welho.com (Postfix) with ESMTP id ECC0E33D4 for ; Sat, 5 Mar 2016 13:21:40 +0200 (EET) X-Virus-Scanned: Debian amavisd-new at pp.htv.fi Received: from welho-smtp2.welho.com ([IPv6:::ffff:83.102.41.85]) by localhost (welho-filter4.welho.com [::ffff:83.102.41.26]) (amavisd-new, port 10024) with ESMTP id yUa8B3Xy5a2v for ; Sat, 5 Mar 2016 13:21:39 +0200 (EET) Received: from zero.my.domain (87-100-247-134.bb.dnainternet.fi [87.100.247.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by welho-smtp2.welho.com (Postfix) with ESMTPS id 6E70A21C for ; Sat, 5 Mar 2016 13:21:39 +0200 (EET) Received: from thunderbolt.my.domain (thunderbolt.my.domain [10.192.168.30]) by zero.my.domain (8.15.2/8.15.2) with ESMTPS id u25BLXwX081742 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Sat, 5 Mar 2016 13:21:38 +0200 (EET) (envelope-from ekarkkai@pp.htv.fi) Received: from thunderbolt.my.domain (localhost [127.0.0.1]) by thunderbolt.my.domain (8.15.2/8.15.2) with ESMTPS id u25BLXS1033725 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Sat, 5 Mar 2016 13:21:33 +0200 (EET) (envelope-from ejk@thunderbolt.my.domain) Received: (from ejk@localhost) by thunderbolt.my.domain (8.15.2/8.15.2/Submit) id u25BLXW6033724 for freebsd-questions@freebsd.org; Sat, 5 Mar 2016 13:21:33 +0200 (EET) (envelope-from ejk) Date: Sat, 5 Mar 2016 13:21:33 +0200 From: Esa Karkkainen To: freebsd-questions@freebsd.org Subject: Re: Check which services/processes need restart after update Message-ID: <20160305112133.GB4778@pp.htv.fi> Mail-Followup-To: Esa Karkkainen , freebsd-questions@freebsd.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Mar 2016 11:29:10 -0000 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