From ce0e78eaeb3b2311327505789e7d56f89711add1 Mon Sep 17 00:00:00 2001 From: lookshe Date: Sun, 21 Sep 2014 00:17:28 +0200 Subject: scripts from laptop for copying and syncing pictures from camera and a script for killing a process at a specific time --- timeKill.sh | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100755 timeKill.sh (limited to 'timeKill.sh') diff --git a/timeKill.sh b/timeKill.sh new file mode 100755 index 0000000..cd3f0ec --- /dev/null +++ b/timeKill.sh @@ -0,0 +1,106 @@ +#/bin/bash + +ende() { + printf "\b \b" + echo "$0 cancelled" + # show input again + stty echo + exit 10 +} + +trap ende 2 + +usage() { + echo "usage: $0 (processname|pid) time(hh:mm)" + exit 1 +} + +output() { + if [ $# -eq 1 ] + then + printf "$1" + sleep 3 + printf "\b \b" + fi +} + +rotate() { + rotate_help + rotate_help +} + +rotate_help() { + output "|" + output "/" + output "-" + output "\\" +} + +# exit if not 2 arguments are given +if [ $# -ne 2 ] +then + usage +fi + +process="$1" +time="$2" +actTime="$(date +%H:%M)" +# exit if given time is not correct +if [ "$(echo "$time" | sed 's/[01][0123456789]:[012345][0123456789]\|[2][0123]:[012345][0123456789]//g')" != "" ] +then + usage +fi + +# select if PID or processname is given +# hopefully no process is named only with numbers +if [ "$(echo "$process" | sed s/[0123456789]//g)" = "" ] +then + isPID="true" +else + isPID="false" +fi + +# exit if processname or PID is not single-valued +if [ $(ps -A | grep $process | wc -l) -ne 1 ] +then + echo "no process found or too many found! ($process)" + exit 2 +fi + +# convert processname to PID if neccessary +if [ "$isPID" = "false" ] +then + process="$(ps -A | grep $process | awk '{print $1}')" +fi + +# turn of showing input +stty -echo + +# endless loop ;-) +while [ 1 ] +do + # exit if process already stopped + if [ $(ps -A | awk '{print $1}' | grep $process | wc -l) -ne 1 ] + then + echo + echo "process already stopped" + stty echo + exit 0 + fi + + # if time has reached, then kill process and exit + if [ "$actTime" = "$time" ] + then + kill "$process" + echo + echo "process killed succesfully" + stty echo + exit 0 + # output to see that the script works + # checks every 48 sec + else + rotate + rotate + fi + actTime=$(date +%H:%M) +done -- cgit v1.2.3