将触发器发送到我的python脚本

2024-05-19 17:02:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个长时间运行的python脚本,我想通过udev规则调用它。脚本应该在无人值守的情况下在后台运行。udevRUN不适合长时间运行的命令,这会妨碍我的工作—我的脚本在怀尔。所以我不能通过udev直接调用我的脚本。在

我试图通过shell脚本在udev RUN中调用它来否认它:

#!/bin/bash
/path/to/pythonscript.py & disown

这个还是被杀了。在

现在我正在考虑将我的脚本转换成一个守护进程,例如使用pythons^{}模块。现在“所有”我需要做的就是在udev RUN语句中放入一个短命令,它将向我的守护进程发送某种类型的触发器,一切都会好起来的。我不太清楚的是实现这种沟通的最佳方式。我在考虑向我的守护进程添加一个jsonrpc服务,只监听环回设备。有没有更简单或更好的方法来实现我想要的?在

编辑 感谢下面的评论,我想出了以下解决方案。主“守护程序”:

^{pr2}$

这是通过systemd,单位文件being开始的

[Unitt]
Description=Start auto_copy.py script

[Service]
ExecStart=/home/isaac/bin/auto_copy_daemon.py

[Install]
WantedBy=multi-user.target

还有一个udev规则:

SUBSYSTEM=="block", KERNEL=="sr0", ACTION=="change", RUN+="/home/isaac/bin/send_siguser1.sh"

最后是发送信号的脚本:

#!/bin/bash
kill -SIGUSR1 $(ps -elf |grep auto_copy_daemon.py |awk '/python/ {print $4}')

如果有人感兴趣,这个项目就在github上。在


Tags: runpy命令脚本bashhomeautobin