Scheduled Maintenance: We are aware of an issue with Google, AOL, and Yahoo services as email providers which are blocking new registrations. We are trying to fix the issue and we have several internal and external support tickets in process to resolve the issue. Please see: viewtopic.php?t=158230

 

 

 

Automa service restart + unattended upgrades?

New to Debian (Or Linux in general)? Ask your questions here!
Post Reply
Message
Author
saljut7
Posts: 32
Joined: 2015-11-14 15:29

Automa service restart + unattended upgrades?

#1 Post by saljut7 »

Hello,

I'm wondering if there is a working way to combine https://packages.debian.org/jessie/unattended-upgrades with automatic service restart if necessary. I've set up https://wiki.debian.org/UnattendedUpgrades successfully but as far as I understood this procedure doesn't restart the services, does it?

I've found http://blog.sourcepole.ch/2012/06/07/au ... nd-ubuntu/ offering a script:

Code: Select all

#!/bin/bash
#
# Copyright (C) 2012 Sourcepole.ch
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
# MA 02110-1301 USA
#
# On Debian systems, a copy of the GNU General Public License may be
# found in /usr/share/common-licenses/GPL.


function help()
{
    cat<<-EOH
	$0 [-h|--help] [-n] [-a]
	Try to restart services, as indicated by checkrestart.
	Options:
	  -h, --help      ... help
	  -s, --simulate  ... simulate, do nothing, just print actions
	  -a              ... script is run by apt-get, add headers to output
	Return codes:
	  0 ... OK
	  1 ... error
	  2 ... warning
EOH
        exit 0
}

# Path to checkrestart
PATH_CHECKRESTART="/usr/sbin/checkrestart"

# Required binaries/scripts
NEED="egrep sed"

function warning()
{
    echo "! Warning: $@" 1>&2
    EXIT=2
}

function error()
{
    echo "!! Error: $@" 1>&2
    exit 1
}

function message()
{
    echo "$@"
}

function xeval()
{
    local cmd="$1"
    local ret_func="$2"
    local ret_str="Command \"$cmd\" returns"
    [ -z "$ret_func" ] && ret_func="error"
    message "$cmd"
    [ "$DRYRUN" == "1" ] &&  cmd=":"
    eval "$cmd" || $ret_func "$ret_str $?"
}

# starting exit code
EXIT=0

# arguments parsing
while [ "$#" != "0" ]; do
    case "$1" in
        -s|--simulate)
            DRYRUN="1"
           ;;
        -a)
            APTGET="1"
           ;;
        -h|--help)
            help
            ;;
    esac
    shift
done

# header to apt-get output
[ "$APTGET" == "1" ] && message "--- start $0"

# check paths
[ ! -x "$PATH_CHECKRESTART" ] &&
    error "Can not execute $PATH_CHECKRESTART"

# check required binaries/scripts
for bin in $NEED; do
    which "$bin" >& /dev/null || \
        error "Required binary/script not found $@"
done

# get output of checkrestart
output="`xeval $PATH_CHECKRESTART`"

# write output
message "$output"

# check output
[ -z "$output" ] &&
    error "Output of $PATH_CHECKRESTART was empty"

# count number of processes to restart
no_procs="`echo \"$output\" | \
    egrep '^Found [0-9]+ processes using old versions of upgraded files' | \
    sed 's/^Found \([0-9]*\).*/\1/'`"

# restart services
echo ""
[ "$no_procs" != "0" ] && message "Trying to restart services..."

IFS="
"
no_services=0
for service in `echo "$output" | sed "/^These are the init scripts:/,//!d" | egrep "^service "`; do
   xeval "$service" "warning"
   no_services="$((no_services+1))"
done

# check if no of processes is equal to no of services
# if [ "$no_services" != "$no_procs" ]; then
#     warning "Number of processes ($no_procs) is not equal to number of services ($no_services)"
# fi

# last messages
[ "$EXIT" == "0" ] && \
    message "Completed without problems" || \
    warning "Completed with some warnings see above"

# header to apt-get output
[ "$APTGET" == "1" ] && message "--- end $0"

exit $EXIT
My question is: How can I combine it with unattended upgrades or are there any other ways to restart services after an upgrade automatically?

Thanks alot!
sj7

Post Reply