我有一个长时间运行的python脚本,我想通过udev
规则调用它。脚本应该在无人值守的情况下在后台运行。udevRUN
不适合长时间运行的命令,这会妨碍我的工作—我的脚本在怀尔。所以我不能通过udev直接调用我的脚本。在
我试图通过shell脚本在udev RUN中调用它来否认它:
#!/bin/bash
/path/to/pythonscript.py & disown
这个还是被杀了。在
现在我正在考虑将我的脚本转换成一个守护进程,例如使用pythons^{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上。在
目前没有回答
相关问题 更多 >
编程相关推荐