在 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