gpt4 book ai didi

Linux:在连接的 USB 串行加密狗上启动守护进程

转载 作者:IT王子 更新时间:2023-10-28 23:53:18 24 4
gpt4 key购买 nike

在我的 Linux(BeagleBone Black 上的 Angstrom 发行版)上,我有一个 USB 加密狗,它显示为串行端口,默认情况下可用 /dev/ttyUSB0

我想启动一个守护进程,它将连接到串行端口并将其用作套接字。我有这个 USB 到 socket 桥的代码,它在手动启动时可以工作。

我希望它在系统启动时自动启动,假设插入了 USB 加密狗。我应该怎么做?

到目前为止的尝试:

  1. systemd:我创建了一个带有条件 After: remote-fs.targetAfter:syslog.target 的 systemd 服务,但是(看起来)USB此时加密狗还没有准备好,守护进程的启动失败。

    是否有其他 systemd targetsservices 需要调节,以便守护进程仅在 udev 完成安装设备且网络准备就绪时启动?

  2. udev:我创建了一个类似

    的 udev 规则

    KERNEL=="ttyUSB?", RUN+="/path/to/daemon.sh"

    执行成功。但是守护进程(作为后台进程启动,在该脚本中带有“&”)似乎没有执行。从 udev 规则中 fork 长时间运行的进程似乎也不受欢迎。

正确的做法是什么?

最佳答案

像这样创建一个 udev 规则

# cat /etc/udev/rules.d/95-serialdaemon.rules
KERNEL=="ttyUSB0", TAG+="systemd", ENV{SYSTEMD_WANTS}="serialdaemon.service"

像这样创建一个systemd服务

# cat /lib/systemd/system/serialdaemon.service
[Unit]
Description=USB serial to socket bridge
After=remote-fs.target
After=syslog.target

[Service]
ExecStart=/mnt/serialdaemon.sh

创建可执行文件

# cat /mnt/serialdaemon.sh
#!/bin/sh
date +%F-%T >> /var/log/serialdaemon.log
/usr/local/serialdaemon/serialdaemon -serial /dev/ttyUSB0 -port 15789 -baud 38400 >> /var/log/serialdaemon.log 2>&1
date +%F-%T >> /var/log/serialdaemon.log

关于Linux:在连接的 USB 串行加密狗上启动守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18463755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com