如何向bash守护进程发送自定义信号?

时间:2015-03-22 21:10:41

标签: bash daemon signals

我在后台运行了简单的bash守护程序(具有root权限),当通知时,它会假设action1或/和action2

如何通知它/发送某种信号对其作出反应?

我已经尝试过每隔1秒或更长时间检查一次文件更改的方案,但这是一种不太理想的解决方案。

2 个答案:

答案 0 :(得分:6)

您可以使用kill命令向进程发送信号。有一系列标准信号以及两个用户定义的信号,您可以让脚本以您喜欢的方式处理。以下是脚本中的内容

#!/bin/bash

handler(){
    echo "Handler was called"
}

trap handler USR1

while sleep 1
do
    date
done

要向脚本发送信号,首先需要找到脚本的pid,然后使用kill命令。它可能看起来像kill -USR1 24962

答案 1 :(得分:1)

您可以使用kill命令向进程发送信号。在bash中,您可以使用trap命令创建signal handler

#!/bin/bash
# traptest.sh

trap "echo Booh!" SIGINT SIGTERM
echo "pid is $$"

while :         # This is the same as "while true".
do
        sleep 60    # This script is not really doing anything.
done