简体   繁体   中英

bash script exits with zero status even after kill signal

I keep getting zero status even after interrupting the script.

The first script

#!/bin/bash

## call the backup script
/usr/local/bin/backup 2>&1 >/dev/null
echo $?

backup

#!/bin/bash

exitscript() {
 rm -f $LOCKFILE

 echo "Script Status: $1 | tee -a ${LOG}"
 echo "> End Date: $(date +'%d.%m.%Y %H:%M:%S')" | tee -a ${LOG}
 exit $1
}

######START#######
trap "exitscript 1" 1 2 23 24 25

rsync ${args} ${src} ${dest} | tee -a ${RSYNC_LOG}
retcode=${PIPESTATUS[0]}
if [[ ${retcode} -ne 0 ]]; then
  exitcode=1
fi

exitscript ${exitcode:-0}

When the First Script is run, it returns exit status of 0 although i have tried to kill the backup script before it ends (for that i have created a very large size file so that rsync takes time to copy the file and i get the time to kill the script before it ends)

ps -ef | grep -i backup
kill $PID 

Another thing is that even after killing the backup script, rsync still runs. I would like for rsync to stop once the script is being killed and my first script to return the status code of zero. Much appreciation for any suggestions. Thanks!

I assume the missing quote in echo "Script Status: $1 | tee -a ${LOG} is not relevant to the question.
When you want a function to handle the trap, you need to export that function.
And when you want to kill children, you should add these in your trap-function.

I tested these adjustments with a sleep command, it should work for rsync too.

#!/bin/bash

exitscript() {
 echo "Script Status: $1"
 (( $pleasekill > 0 )) && kill ${pleasekill}
 echo "> End Date: $(date +'%d.%m.%Y %H:%M:%S')"
 exit $1
}

# Export the function exitscript
export exitscript

######START#######
pleasekill=0
trap "exitscript 1" 1 2 23 24 25
# Start I/O-friendly rsync function
sleep 30 &
pleasekill=$!
wait

exitscript 2

When you test this with the first script, use ^C or kill -1 pid_of_backup .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM