Udev : 分离脚本以等待挂载
Udev : detach script to wait for mounting
我制定了一个简单的 udev 规则,可以有效地启动我的脚本:
KERNEL=="sdc", ACTION=="add", SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Bookeen", ATTRS{product}=="Cybook", RUN+="/home/nap/Scripts/Wallabag.sh"
udev 规则正常运行,启动以下脚本:
#!/bin/bash
sleep 5
(
exec </dev/null >/home/nap/usb.log 2>&1
set -x
mkdir /media/nap/Cybook/Test
) &
本应分离并让时间驱动自动挂载,但脚本退出后仍然挂载。
我已经用“& disown”试过同样的效果。
我也试过 运行 我的脚本在另一个脚本中,如 here 所述,效果相同。
我是不是做错了什么?
感谢您的回答。
由udev
的RUN=
指令启动的进程应该是short-running。我想建议一种更简单的方法,通过使用系统调度程序 at
命令 从 udev
解耦 long-running 进程:
KERNEL=="sdc", ACTION=="add", ATTRS{product}=="Cybook", RUN+="/usr/bin/at -M -f /home/nap/Scripts/Wallabag.sh now"
只需确保您的 /home/nap/Scripts/Wallabag.sh
脚本与 /bin/sh
兼容 - 这是 at
使用的 shell。实现简单的 sleep
延迟或 /media/nap/Cybook
availability/readiness.
的轮询应该绰绰有余
我制定了一个简单的 udev 规则,可以有效地启动我的脚本:
KERNEL=="sdc", ACTION=="add", SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Bookeen", ATTRS{product}=="Cybook", RUN+="/home/nap/Scripts/Wallabag.sh"
udev 规则正常运行,启动以下脚本:
#!/bin/bash
sleep 5
(
exec </dev/null >/home/nap/usb.log 2>&1
set -x
mkdir /media/nap/Cybook/Test
) &
本应分离并让时间驱动自动挂载,但脚本退出后仍然挂载。
我已经用“& disown”试过同样的效果。
我也试过 运行 我的脚本在另一个脚本中,如 here 所述,效果相同。
我是不是做错了什么?
感谢您的回答。
由udev
的RUN=
指令启动的进程应该是short-running。我想建议一种更简单的方法,通过使用系统调度程序 at
命令 从 udev
解耦 long-running 进程:
KERNEL=="sdc", ACTION=="add", ATTRS{product}=="Cybook", RUN+="/usr/bin/at -M -f /home/nap/Scripts/Wallabag.sh now"
只需确保您的 /home/nap/Scripts/Wallabag.sh
脚本与 /bin/sh
兼容 - 这是 at
使用的 shell。实现简单的 sleep
延迟或 /media/nap/Cybook
availability/readiness.