我们常用的信号有:
1: SIGHUP
2: SIGINT
9: SIGKILL
15: SIGTERM
18: SIGCONT
19: SIGSTOP
如我们执行任务的时候,按Ctrl+C,会发送信号2给程序,程序就中止了。如果我们想在这个时候执行一些操作,就需要捕捉到这个信号,做相应的处理:
#!/bin/bash
#
# Date: 2018-01-09
# Script Name: a.sh
# Author: Liemer_Lius
CLEAN (){
rm -rf /var/tmp/test
echo "Cleaning..."
}
trap "CLEAN; exit 5" INT
mkdir -p /var/tmp/test
while true; do
touch /var/tmp/test/file-`date +%F`.txt
sleep 2
done
trap后面的引号中,是执行的一些操作;
引号后面是要捕捉的信号;
一般,会将进行的操作放进一个函数里面,然后在函数结束之后,需要exit,否则Ctrl+C无法中止,就只能:
Ctrl+Z放入后台 –> kill %1来杀死这个进程了。
转载请注明:liutianfeng.com » shell脚本中的信号捕捉
发表回复
要发表评论,您必须先登录。