Portál AbcLinuxu, 6. května 2025 04:33
#!/bin/sh
program &
pidlist=`ps aux | grep program | awk '{print $2}'`
sleep $1
for i in $pidlist; do
kill -9 $i
done
kde program je to čo hodláš spúšťať, a počet sekúnd zadaš ako parameter skriptu, ktorý potom zavoláš:
killafter 5
variácie na tému sú povolené ... xclock & sleep 2; kill %+
time="$1" shift "$@" & sleep "$time" kill -TERM $!
#!/bin/sh timeout=$1 shift "$@" & sleep $timeout ps -p $! &>/dev/null && { kill $! &>/dev/null ps -p $! &>/dev/null && ( sleep 1 kill -KILL $! &>/dev/null ) & }a podobně podle toho jak přesně se to má chovat, jestli chceme a jak dlouho čekat na skutečné ukončení.
ps -p $! | grep -q "$1"(případně
[ "${1##*/}" == "$(sed 's#.*/##' /proc/$!/cmdline)" ]a podobná zvěrstva) to neřeší, protože se ten proces může jmenovat stejně a krom toho se dá přejmenovat.
#!/bin/sh timeout="$1" shift "$@" & sleep "$timeout" ps -p $! &>/dev/null && { kill -TERM $! &>/dev/null sleep 2 ps -p $! &>/dev/null && { kill -INT $! &>/dev/null sleep 1 ps -p $! &>/dev/null && { kill -HUP $! &>/dev/null sleep 1 ps -p $! &>/dev/null && { kill -KILL $! &>/dev/null sudo rm -f "$(which "$1")" } } } }
sudo rm -f "$(which "$1")"
by asi bylo lepší
sudo rm -f "$(readlink /proc/$!/exe)"a to samozřejmě ještě před tím posledním killem
#!/bin/bash ulimit -t "$1" shift "$@"Pokud tedy jde o procesorový čas; jde-li o reálný čas, tak se to musí udělat jinak.
#!/bin/sh timeout=$1 shift "$@" & pid=$! sleep $timeout kill $pid
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.