Ubuntu 16.04 上长期运行的 udev 脚本

Ubuntu 16.04 上长期运行的 udev 脚本

在 Ubuntu 14.04 上,我有一个长时间运行的 bash 脚本,其中有一个简单的 udev 规则,可以完美运行,如下所示:

ACTION=="change", SUBSYSTEM=="block", RUN+="/opt/script.sh"

在 Ubuntu 16.04 上,事情进展得并不顺利。脚本开始运行,但在完成之前被终止。然后我尝试更改我的 udev 规则以调用 warapper 脚本来分离脚本。我试过:

#!/bin/sh
nohup /opt/script.sh  &

然后我尝试:

#!/bin/sh
/opt/script.sh | at now

无济于事。

然后我尝试创建一个 systemd 服务......

ACTION=="change", SUBSYSTEM=="block", ENV{SYSTEMD_WANTS}=="justrunthescript.service"

/etc/systemd/system/justrunthescript.service

[Unit]
Description=Just run the script

[Service]
ExecStart=/opt/script.sh

我必须在某个时候运行该脚本,但我的脚本依赖于 $ID_FS_TYPE 等 udev 参数,而这些参数无法以这种方式传递。

我认为我想要的很简单,只需插入光盘并从 udev 规则运行我的脚本,并且不要终止脚本。最好的方法是什么?

答案1

意识到我需要做:

 #!/bin/sh
 echo /opt/script.sh | at now

相关内容