【发布时间】:2013-08-30 02:25:58
【问题描述】:
在我的 Linux(BeagleBone Black 上的 Angstrom 发行版)上,我有一个 USB 加密狗,它显示为串行端口,默认情况下以 /dev/ttyUSB0 的形式提供
我想启动一个守护程序,它将连接到串行端口并使其作为套接字可用。我有这个 USB 到插座桥接器的代码,它在手动启动时可以工作。
我希望它在系统启动时自动启动,假设 USB 加密狗已插入。我应该怎么做?
目前的尝试:
-
systemd:我创建了一个带有条件
After: remote-fs.target和After:syslog.target的 systemd 服务,但是(似乎)USB 加密狗当时还没有准备好,并且守护程序的启动失败。是否还有其他 systemd
targets或services需要设置,以便仅在 udev 完成设备安装并且网络准备好时启动守护进程? -
udev:我创建了一个类似
的 udev 规则KERNEL=="ttyUSB?", RUN+="/path/to/daemon.sh"
成功执行。但是守护进程(在该脚本中作为后台进程启动,带有“&”)似乎没有执行。此外,从 udev 规则中分叉长时间运行的进程似乎也不受欢迎。
正确的做法是什么?
【问题讨论】:
-
前段时间我遇到了类似的问题,这篇博客文章对我帮助很大(因为它几乎正是您想要做的)。 Proper(-ish) way to start long-running systemd service on udev event (device hotplug)
-
感谢您的参考,现在可以使用了!
标签: linux usb boot udev systemd