shell编程之一基础
# kill -l # 查看所有信号1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL10) SIGUSR111) SIGSEGV12) SIGUSR2
13) SIGPIPE14) SIGALRM15) SIGTERM16) SIGSTKFLT
17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP
21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU
25) SIGXFSZ26) SIGVTALRM27) SIGPROF28) SIGWINCH
29) SIGIO30) SIGPWR31) SIGSYS34) SIGRTMIN
35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+338) SIGRTMIN+4
39) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8
43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+12
47) SIGRTMIN+1348) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-14
51) SIGRTMAX-1352) SIGRTMAX-1253) SIGRTMAX-1154) SIGRTMAX-10
55) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-758) SIGRTMAX-6
59) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2
63) SIGRTMAX-164) SIGRTMAX
常见的信号
1)SIGHUP # 让一个进程不用重启,就能重读其配置文件,并让其配置文件生效
2)SIGINT # 中止信号,Ctrl+C发出的就是此信号
9)SIGKILL # 强制杀死进程
15) SIGTERM # 终止进程,kill默认的就为此信号
18) SIGCONT # 当任务在后台终止时,使用bg命令其实就是发送此信号
19) SIGSTOP # 运行某前台命令时,使用Ctrl+z其实就是发送此信号
SYNTAX trap [-lp]
# cat ping.sh
#!/bin/bash
#
while :;do
ping -c 1 -W 1 172.16.1.3 &> /dev/null && echo "172.16.1.3 is up." || echo "172.16.1.3 is down."
done
# ./ping.sh
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
Killed
# ps aux | grep "bash"
root 92290.00.7663321844 pts/0 Ss 10:19 0:02 -bash
root 127340.00.6662241688 pts/1 Ss 15:54 0:00 -bash
root 128040.00.4638841100 pts/0 S+ 15:55 0:00 /bin/bash ./ping.sh
root 128120.00.261216 736 pts/1 R+ 15:55 0:00 grep bash
# kill -9 12804 # 一直ping,按Ctrl+c并不能取消,只能切换终端kill掉
# vim ping.sh
# cat ping.sh
#!/bin/bash
#
trap 'echo "quit";exit 3' SIGINT # 捕捉到SIGINT信号,则立即退出脚本
while :;do
ping -c 1 -W 1 172.16.1.3 &> /dev/null && echo "172.16.1.3 is up." || echo "172.16.1.3 is down."
done
# ./ping.sh
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
172.16.1.3 is down.
quit # 当我按了Ctrl+c,也就是发送SIGINT信号,立马退出
页:
[1]