Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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
将触发器发送到我的python脚本_Python_Linux_Ipc_Udev - Fatal编程技术网

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

将触发器发送到我的python脚本,python,linux,ipc,udev,Python,Linux,Ipc,Udev,我有一个长时间运行的python脚本,我希望通过udev规则调用它。脚本应该在无人参与的情况下运行,如果您愿意,可以在后台运行。udevRUN不适合长时间运行的命令,这会妨碍我的工作-我的脚本在一次恶意攻击后被杀死。因此我无法通过udev直接调用我的脚本 我试图通过一个shell脚本在udev RUN中调用它来否认它: #!/bin/bash /path/to/pythonscript.py & disown 这个还是被杀了 现在我想把我的脚本变成一个守护进程,例如使用pythons模

我有一个长时间运行的python脚本,我希望通过
udev
规则调用它。脚本应该在无人参与的情况下运行,如果您愿意,可以在后台运行。udev
RUN
不适合长时间运行的命令,这会妨碍我的工作-我的脚本在一次恶意攻击后被杀死。因此我无法通过udev直接调用我的脚本

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

#!/bin/bash
/path/to/pythonscript.py & disown
这个还是被杀了

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

编辑 由于下面的评论,我提出了以下解决方案。主“守护进程”:

这是通过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}')

如果有人感兴趣,该项目已启动。

您希望您的脚本在后台运行吗?您是如何实现“否认”的?是的,它应该通过udev在无头服务器上触发。发送信号被视为选项吗?我想发送信号是一个选项-哪种信号最好?
#!/bin/bash
kill -SIGUSR1 $(ps -elf |grep auto_copy_daemon.py |awk '/python/ {print $4}')