2013-08-27 7 views
9

내 리눅스 (BeagleBone 블랙 옹스트롬 배포판) 나는 시리얼 포트로하고, 기본적으로 제시하는 USB 동글을 가지고에이 /dev/ttyUSB0리눅스 : 나는를 시작하려면 USB 직렬 동글

로 사용할 수 있습니다 연결에 데몬을 시작합니다 데몬은 직렬 포트에 연결하여 소켓으로 사용할 수 있도록합니다. 이 USB 대 소켓 브릿지에 대한 코드가 있고 손으로 시작할 때 작동합니다.

USB 동글이 연결되어 있다고 가정 할 때 시스템이 부팅 될 때마다 자동으로 시작되기를 원합니다. 어떻게해야합니까?

시도까지 :

  1. systemd : 나는 조건 After: remote-fs.targetAfter:syslog.target와 systemd 서비스를 생성하지만, USB 동글은 그 시점에서 준비되지 데몬의 시작은 실패 (보인다).

    다른 시스템에 targets 또는 services이 있습니까? udev가 장치 설치를 마치고 네트워크가 준비되었을 때만 데몬이 시작되도록하려면?

  2. udev에 : 나는

    커널과 같은 udev에 규칙을 만들어 == "ttyUSB?", RUN + = "/ 경로// daemon.sh에"성공적으로 실행

    . 그러나 데몬 (해당 스크립트 내에서 "&"이있는 백그라운드 프로세스로 시작됨)은 실행되지 않는 것처럼 보입니다. 또한 udev 규칙에서 장시간 실행되는 프로세스를 포크하는 것으로 눈살을 찌푸리게하는 것 같습니다.

올바른 방법은 무엇입니까? 내 더욱 코멘트에 링크를 해결하는 것 때문에

+0

,이 블로그 기사는 (거의 정확하게 당신이 뭘 하려는지 이후) 나에게 많은 도움이됩니다. [udev 이벤트 (system hotplug)에서 장기 실행 systemd 서비스를 시작하는 올바른 방법 (-ish)] (http://blog.fraggod.net/2012/06/16/proper-ish-way-to-start) -long-running-systemd-service-on-udev-event-device-hotplug.html) –

+0

참조 해 주셔서 감사합니다. – Philipp

답변

9

만들기 실행 파일

# 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 
+1

자신의 anwser를 "허용"한 것으로 표시 할 수 있습니다. 문제의 해결 방법이기 때문에 선택하십시오. 그것에 대해 아무 것도 잘못 ... –

3

# 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 

같은 systemd 서비스를

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

같은 udev에 규칙 만들기 이 문제는 여기에 cede 명령을 사용하여 데몬을 시작하기위한 udev 사용에 대한 해결책입니다. rtain USB 장치가 연결되어 : 내가 얼마 전에 비슷한 문제가 있었다

Proper(-ish) way to start long-running systemd service on udev event (device hotplug)

+2

답변을 수락하면 포인트를 얻을 수 있습니다. 내 것이 단지 (내 자신의) 참조 용이다. – Philipp

+0

이 링크는 실행 가능한 솔루션을 제공하지만 향후이 링크가 손상 될 경우 해당 링크의 내용 요약을 복사하여 붙여 넣으십시오.물론 원래 링크를 언급함으로써 정당한 신용을 제공해야합니다. – anishsane

+0

@anishsane 죄송합니다. 정확합니다. 이것은 SO에 대한 첫 번째 게시물 중 하나였습니다. 오늘 답변을 작성한 경우 그렇게했을 것입니다. 여유 시간이 있다면 링크에 제공된 솔루션 요약을 추가하겠습니다. –