Re-starting daemons across upgrades?

Gabor Kovesdan gabor at FreeBSD.org
Fri Sep 16 20:15:50 UTC 2011


On 2011.09.16. 17:51, Matthias Andree wrote:
> Am 16.09.2011 11:51, schrieb Lev Serebryakov:
>> Hello, Freebsd-ports.
>> You wrote 16 сентября 2011 г., 0:28:07:
>>
>>>> Really? I thought it was supposed to be standard behaviour- the @stopdaemon
>>>> line in pkg-plist facilitates that.
>>> While I totally understand why we do this, I have to say it's VERY
>>> VERY annoying behavior especially when one upgrading a remote system
>>> with multiple server daemon ports.  One have to watch the whole
>>> process carefully and restart the daemon manually.
>>    Yep, and even more annoyingly is that it is completely inconsistent:
>>   some daemons are stopped, some not, etc.
> We do not currently have a standard procedure for that, nor do we record
> the necessary state -- perhaps we should just discuss, vote, and add a
> paragraph to the porter's handbook.
>
> We also need to bring the authors (or volunteers) for the de-facto
> standard upgrade tools into the loop.
>
> My thoughts:
>
> - give the user a choice to configure whether to restart services
>
> - optional: give the users a chance to configure this per-service
>
> - discuss whether we want/need to support this (a) in the framework that
> we currently use, (b) only in pkgng, (c) in portmaster and portupgrade
> where necessary.
Or we could have a facility to check whether services are running. For 
example, I have some cron scripts, which are similar for all of the 
services that I'm watching. They run periodically and restart services 
if they are down. It does not matter if they are down because of an 
upgrade or a failure, so this solution is more general. Here's an 
example that I have for MySQL:

#!/bin/sh
PID_FILE="/var/db/mysql/server.mypc.hu.pid"
PID=`cat $PID_FILE`
EXECUTABLE="/usr/local/etc/rc.d/mysql-server start"

if test -r $PID_FILE ; then
         # pidfile exist, is it correct?
         if kill -CHLD $PID >/dev/null 2>&1; then
                 # ok, exit silently
                 exit 0
         fi
         rm -f $PID_FILE
fi
echo ""
echo "Couldn't find the MySQL server running, retsarting.."
echo ""
$EXECUTABLE

Gabor


More information about the freebsd-ports mailing list