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 所述,效果相同。

我是不是做错了什么?

感谢您的回答。

udevRUN=指令启动的进程应该是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.

的轮询应该绰绰有余