Signal kezelés
Beküldte pzoli - 2011, május 23 - 6:11du
Ez a minta kód a signal handling kategóriából való. Egy script meghív egy másik scriptet, majd várakozik 10 másodpercig, amíg a hívott script dolgozik a háttérben. Ezután küld neki egy üzenetet, és megvárja, amíg leáll.
test.sh
#!/bin/bash SCRIPT_PID=$$ trap " STOPFLAG=true; echo \"signaled\"; kill -s TERM \$CALL_PID >/dev/null; " SIGALRM TERM SIGKILL SIGHUP SIGINT SIGQUIT echo "signal registered" ./sub.sh >> sub.log 2>>sub_error.log & CALL_PID=$! echo "sub started with $CALL_PID PID" echo "main sleep 10 second simulating other processes..." sleep 10 [ -z "$STOPFLAG" ] && { kill -s SIGQUIT $SCRIPT_PID >/dev/null } wait $CALL_PID [ $? -ne 0 ] && { echo "stop signal error"; exit; } echo "sub.sh log content:" cat *.log rm *.log echo "end of script $SCRIPT_PID"
sub.sh
#!/bin/bash echo "sub started..." trap " echo \"sub terminated\"; exit;" TERM SIGKILL SIGHUP SIGQUIT SIGINT while true; do DT=`date` echo "$DT - sub sleep 2 minute..." sleep 2 done
- A hozzászóláshoz be kell jelentkezni