#!/bin/sh set -e # Copyright 2017-2019 Holger Levsen (holger@layer-acht.org) # # 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, see # # Stop all running piuparts-slaves gracefully and watch… # . @sharedir@/piuparts/lib/read_config.sh get_config_value SLAVEROOT global slave-directory get_config_value SLAVECOUNT global slave-count 1 SESSIONNAME=piuparts_slave_screen cd $SLAVEROOT LOGS= for i in $(seq 1 $SLAVECOUNT) ; do LOGS="$LOGS screenlog.$i" done tail -f $LOGS & TAILPID=$! trap "kill $TAILPID" INT TERM EXIT sleep 0.5 pkill --signal INT --full '/usr/bin/python3 @sharedir@/piuparts/piuparts-slave' i=1 while pgrep --full '/usr/bin/python3 @sharedir@/piuparts/piuparts-slave' > /dev/null ; do echo -n "$(date -u +%T) - " pgrep --full '/usr/bin/python3 @sharedir@/piuparts/piuparts-slave' | xargs -r echo -n "slaves running: " SLEEP=$(( $i * $i )) BUSY=$(ps fax | grep -v grep | grep '/usr/bin/python3 @sbindir@/piuparts' | awk '{print $NF}') if [ -n "$BUSY" ] ; then # really/meaningful busy echo echo "slaves are busy with:" echo "$BUSY" fi echo -n " sleeping ${SLEEP}sec now..." for j in $(seq 1 $SLEEP) ; do sleep 1 echo -n "." done echo i=$(( $i + 1 )) done echo -n "$(date -u +%T) - " pgrep --full '/usr/bin/python3 @sharedir@/piuparts/piuparts-slave' | xargs echo "slaves running: (should list none) " trap - INT TERM EXIT kill $TAILPID pkill --full "SCREEN -S $SESSIONNAME -d -m"