使用硬件控制杀死脚本

时间:2017-09-09 06:48:16

标签: bash hardware

我有一个脚本,根据某些参数控制12v继电器阵列。举个例子:我正在监测温度和压力。如果温度超过某个值,将拉入继电器以打开通风口并启动风扇。如果温度下降到一定值,继电器将被释放,通风口将关闭,风扇将停止。与压力相同,压力将打开电磁阀并根据压力值再次关闭。

一切正常,我很开心。脚本(bash)在启动时启动。但是,有时脚本会神秘地死掉,使继电器处于“活动”状态。

当脚本死亡时,有没有办法确保将继电器重置为“非活动”或“未通电”?

1 个答案:

答案 0 :(得分:2)

继续发表评论,您可以捕获脚本可以接收的任何信号(SIGKILLSIGSTOP除外),这些信号会将其关闭并使用trap拦截收到的信号并运行所需的命令将继电器重置为" not-active"或者"在进程死亡之前未通电" 状态。

使用trap非常简单。您只需在脚本顶部设置陷阱,列出捕获信号时要执行的命令。对于简单的命令,你可以做

trap 'command1; command2` SIGTERM SIGINT EXIT

在收到三个列出的信号中的任何一个时运行command1command2。如果您需要执行一系列命令,请声明一个函数,然后trap执行信号接收功能,例如

cleanup () {
    # any number of commands to run
}

trap cleanup SIGTERM SIGINT EXIT

有关标准信号的附加信息,请参阅man 7 signals。有关man bash的其他信息,请参阅trap(或在" 中使用bash中的陷阱"进行搜索)。