![세션을 열지 않고 백그라운드에서 picocom 실행](https://linux55.com/image/126696/%EC%84%B8%EC%85%98%EC%9D%84%20%EC%97%B4%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EC%97%90%EC%84%9C%20picocom%20%EC%8B%A4%ED%96%89.png)
원격 시스템에서 SSH 세션을 활성 상태로 유지하지 않고도 picocom이 원격 시스템에 직렬 데이터를 기록하기를 원합니다.
나는 시도했다:
picocom <my options>
로그아웃하면 없어집니다.
picocom <my options> &
터미널에 출력이 없으며 종료하면 picocom
작업 C-a C-x
이 중지되지만 종료되지는 않습니다(필요한데 kill -9
간단한 kill
작업은 작동하지 않습니다. 그런 다음 tty 잠금을 수동으로 지워야 합니다 /var/lock/
).
picocom <my options> > tmp/data.log&
그런 다음 다른 SSH 세션에서:
tail -f tmp/data.log
파일에는 데이터가 출력되지 않습니다 data.log
.
bash -c "picocom --baud 115200 /dev/ttyACM1 > /home/pi/tmp/data.log" &
파일로의 출력도 없습니다. 작업이 즉시 중지됨 상태가 됩니다.
nohup sh -c "picocom --baud 115200 /dev/ttyACM1 > /home/pi/tmp/data.log" &
tail 파일에서 시작 출력을 얻었 picocom
지만 작업이 종료됩니다.
알아두면 좋은 점: picocom
에 반응하지 않습니다 C-z
.
내 질문은 다음과 같습니다
picocom
백그라운드에서 실행할 수 있나요 ?- 세션을 열지 않고 직렬 터미널에 로그인하는 것에 대한 대안은 무엇입니까?
답변1
또 다른 방법은장치 설정으로 stty
, 그러면고양이와 함께 읽어보세요:
stty <my options>
nohup sh -c "cat /dev/ttyACM0 > data.log" &
답변2
나는 사용하는 것이 좋습니다분리. dtach를 사용하면 백그라운드에서 프로그램을 실행할 수 있습니다. 세션을 열지 않고(원격 Raspberry Pi에서) 직렬 로깅을 위해 picocom과 함께 성공적으로 사용했습니다.
또한 picocom에 내장된 로깅을 사용하여 -g
직렬 데이터를 파일에 저장하는 것이 좋습니다.
dtach를 설치한 후 picocom을 사용하여 실행할 수 있습니다. 예:
dtach -A /tmp/dtach picocom --baud 115200 /dev/ttyACM1 -g /home/pi/tmp/data.log
그런 다음 picocom이 실행되면 백그라운드에 넣을 수 있습니다.C-\
사용을 위해 "dtached" 프로세스에 다시 참여하십시오.
dtach -a /tmp/dtach
picocom이 백그라운드에서 로그 파일에 기록한다는 것을 알았으므로 cat /home/pi/tmp/data.log
picocom이 계속 실행 중이지만 "dtached"인 동안 이 작업을 수행할 수 있습니다.
답변3
사용자 세션을 참조한다고 가정하면 실행 중인 화면 세션에 명령을 보내는 옵션과 screen
현재 창에 키 입력을 보내는 명령을 사용할 수 있습니다 .-X
stuff
screen -dmS newScreen bash
screen -S newScreen -X stuff "picocom <options>\n"
screen -ls
screen -r <pid>
명령을 실행하려면 다음 줄의 따옴표를 참고하세요.*
bash -c
...그것도 가능한지 확인하지 않았습니다 tmux
.