信号说明
在脚本执行过程中, 可能会被一些键盘操作快捷方式所打断, 影响脚本运行
1 2 3 4 5 6 7 8 9 10 11 |
HUP (1): 进程重新加载配置 INT (2): 中断, 通常因为按下ctrl+c而产生的信号,用于通知前台进程组终止进程。 QUIT (3): 退出,和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。 ABRT (6): 中止, 通常因某些严重错误产生的引号 KILL (9): 用来强制结束程序的运行 TERM(15): 终止,是不带参数时kill默认发送的信号,默认是杀死进程 SIGCONT(18): 继续 SIGSTOP(19): 停止 TSTP(20): 停止进行运行,通常因为按下ctrl+z而产生的信号 SIGCHLD : 子进程结束时, 父进程会收到这个信号 |
捕捉信号
1 2 3 4 5 6 7 8 9 |
# 捕捉信号、执行引号内的操作 trap "echo 已经识别中断信号:ctrl+c" INT # 捕捉信号、不执行任何操作 trap "" INT #可以同时捕获多个信号 trap "" HUP INT QUIT TSTP |
nohup命令
1 |
nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,但是 nohup 命令会从终端解除进程的关联,进程会丢掉STDOUT,STDERR的链接。标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename 2>&1"来更改缺省的重定向文件名。 |
当前进程所在的终端 结束后并不会影响进程的运行
1 2 3 4 5 6 7 8 9 10 11 12 |
#方法一 [root@lb01 ~]# nohup ping -c 3 www.baidu.com &>/dev/null & #方法二 [root@lb01 ~]# setsid ping -c 3 www.baidu.com &>/dev/null #方法三 [root@lb01 ~]# (ping -c 3 www.baidu.com &>/dev/null) #方法四 [root@lb01 ~]# screen ping -c 3 www.baidu.com &>/dev/null |