#!/bin/bash # Copyright © Sébastien Luttringer # # 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 # of the License, 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. # Check running systemd services for binary update # Convenient way to restart updated systemd service after upgrade (( $UID != 0 )) && echo 'You need to be root' && exit 1 declare -a services services=($(systemctl -t service --full|grep \.service|grep running|sed -rn 's/^(.*\.service).*/\1/p')) for svc in "${services[@]}"; do pid=$(systemctl show "$svc"|sed -nr 's/^MainPID=(.*)/\1/p') if readlink "/proc/$pid/exe"|grep -q '(deleted)'; then echo systemctl restart "$svc" [[ $1 == '-f' ]] && systemctl restart "$svc" fi done [[ -t 2 && $1 != '-f' ]] && echo 'Use -f to execute' >&2 || :