Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 用硬件控制杀死脚本_Bash_Hardware - Fatal编程技术网

Bash 用硬件控制杀死脚本

Bash 用硬件控制杀死脚本,bash,hardware,Bash,Hardware,我有一个脚本,根据某些参数控制一组12v继电器。例如:我正在监测温度和压力。如果温度超过一定值,继电器将被拉入,以打开通风口并启动风扇。如果温度降至某个值,继电器将释放,通风口将关闭,风扇将停止。与压力相同,将根据压力值打开电磁阀并再次关闭 一切都很好,我很高兴。脚本(bash)在启动时启动。然而,有时脚本会神秘地消失,从而使继电器处于“活动”状态 是否有办法确保在脚本死亡时将继电器重置为“未激活”或“未通电”?继续我的评论,您可以捕获脚本可以接收到的任何信号(除了SIGKILL和SIGSTOP

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

一切都很好,我很高兴。脚本(bash)在启动时启动。然而,有时脚本会神秘地消失,从而使继电器处于“活动”状态


是否有办法确保在脚本死亡时将继电器重置为“未激活”或“未通电”?

继续我的评论,您可以捕获脚本可以接收到的任何信号(除了
SIGKILL
SIGSTOP
)正在关闭继电器,并使用
trap
截获接收到的信号,并运行所需的命令,以便在过程结束前将继电器重置为“未激活”或“未通电”状态

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

trap 'command1; command2` SIGTERM SIGINT EXIT
在收到所列三个信号中的任何一个后运行
command1
command2
。如果需要执行一系列命令,请声明一个函数,然后让
trap
在接收信号时执行该函数,例如

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

trap cleanup SIGTERM SIGINT EXIT

有关标准信号的更多信息,请参见
man 7信号。请查阅
manbash
(或搜索“在bash中使用陷阱”),以获取有关
trap
的更多信息。继续我的评论,您可以捕获脚本可以接收的任何信号(除了
SIGKILL
SIGSTOP
)正在关闭继电器,并使用
trap
截获接收到的信号,并运行所需的命令,以便在过程结束前将继电器重置为“未激活”或“未通电”状态

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

trap 'command1; command2` SIGTERM SIGINT EXIT
在收到所列三个信号中的任何一个后运行
command1
command2
。如果需要执行一系列命令,请声明一个函数,然后让
trap
在接收信号时执行该函数,例如

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

trap cleanup SIGTERM SIGINT EXIT

有关标准信号的更多信息,请参见
man 7信号。查阅
man bash
(或搜索“在bash中使用陷阱”)了解有关
trap

的更多信息。是的,使用
trap
命令在任何
SIGTERM SIGINT
退出
信号上将继电器设置为非活动状态。(有关标准信号的更多信息,请参见
man 7信号
)是,使用
trap
命令将任何
SIGTERM SIGINT
退出
信号上的继电器设置为非活动状态。(有关标准信号的更多信息,请参见
man 7信号