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