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

How to send custom signal to bash daemon process?

我在后台有一个简单的 bash 守护进程 运行(具有 root 权限),它假设在收到通知时执行 action1 or/and action2

如何通知 it/send 它会做出反应的某种信号?

我尝试过每 1 秒或更频繁地检查文件更改的方案,但这是一种不太理想的解决方案。

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

#!/bin/bash

handler(){
    echo "Handler was called"
}

trap handler USR1

while sleep 1
do
    date
done

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

您可以使用kill command to send a process a signal. In bash, you can use the trap command to create a 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