为什么陷阱不能中断nohup命令?

时间:2017-12-21 08:07:30

标签: linux bash shell signals nohup

这是一个脚本,名称是test.sh

#!/bin/bash
cleanup(){
    echo "Caught SIGINT ..."
    exit 1

}    
trap 'cleanup' 3
    while :;do
        echo "a"
        sleep 3
    done

如果我直接在linux bash中运行nohup ./test.sh &,它可以捕获kill -3 PID信号,

但如果我在名称为 go.sh 的脚本文件中写nohup ./test.sh &,并且我运行 go.sh ,那么 test.sh 无法捕获kill -3 PID信号

如何编写 go.sh 脚本以确保 test.sh 捕获-3信号?

1 个答案:

答案 0 :(得分:1)

kill -3SIGQUIT)不起作用。根据bash的手册:

  

当bash是交互式的时候,在没有任何陷阱的情况下,它会忽略SIGTERM(这样kill 0不会杀死交互式shell),并且SIGINT被捕获并处理(所以等待内置是可中断的)。 在所有情况下,bash都会忽略SIGQUIT如果作业控制生效,bash会忽略SIGTTINSIGTTOUSIGTSTP