【问题标题】:Why trap does not work to interrupt nohup command?为什么trap不能中断nohup命令?
【发布时间】:2017-12-21 08:07:29
【问题描述】:

这是一个脚本,名字是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 ,然后进行 测试。 sh抓不到kill -3 PID信号

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

【问题讨论】:

  • 请注意 - 信号 3SIGQUITSIGINT2

标签: linux bash shell signals nohup


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 2021-03-11
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2019-01-16
    • 2013-01-28
    • 2016-06-28
    相关资源
    最近更新 更多