On (distro Angstrom trên BeagleBone Black) Linux của tôi, tôi có một dongle USB trong đó trình bày như một cổng nối tiếp và mỗi mặc định có sẵn như là /dev/ttyUSB0
Linux: Bắt đầu daemon trên kết nối USB-sê-ri dongle
Tôi muốn bắt đầu một daemon, mà sẽ kết nối với cổng nối tiếp và làm cho nó có sẵn như là một ổ cắm. Tôi có mã cho cầu nối USB-to-socket này và nó hoạt động khi bắt đầu bằng tay.
Tôi muốn nó tự khởi động bất cứ khi nào hệ thống khởi động, giả sử khóa USB được cắm vào. Tôi nên làm như thế nào?
Những nỗ lực cho đến nay:
systemd: Tôi tạo ra một dịch vụ systemd với điều kiện
After: remote-fs.target
vàAfter:syslog.target
, nhưng (có vẻ như) USB dongle chưa sẵn sàng tại thời điểm đó và khởi động của daemon thất bại.Có hệ thống khác
targets
hoặcservices
để điều kiện, sao cho daemon chỉ được bắt đầu khi udev đã hoàn tất việc cài đặt thiết bị và mạng đã sẵn sàng?udev: Tôi tạo ra một quy tắc udev như
KERNEL == "ttyUSB?", RUN + = "/ path/to/daemon.sh"
mà thực hiện thành công. Nhưng daemon (được bắt đầu như là một quá trình nền với một "&" trong kịch bản đó) dường như không thực thi. Ngoài ra nó có vẻ được cau mày, để ngã ba quá trình chạy dài từ các quy tắc udev.
cách chính xác để làm điều đó là gì?
Tôi đã có một vấn đề tương tự trong một thời gian trước đây, bài viết blog này giúp tôi rất nhiều (vì nó gần như chính xác những gì bạn đang cố gắng để làm). [Cách (đúng) để bắt đầu dịch vụ systemd chạy dài trên sự kiện udev (hotplug thiết bị)] (http://blog.fraggod.net/2012/06/16/proper-ish-way-to-start -long-running-systemd-service-on-udev-event-device-hotplug.html) –
Cảm ơn bạn đã tham khảo, nó bây giờ hoạt động! – Philipp