세션을 열지 않고 백그라운드에서 picocom 실행

세션을 열지 않고 백그라운드에서 picocom 실행

원격 시스템에서 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.logpicocom이 계속 실행 중이지만 "dtached"인 동안 이 작업을 수행할 수 있습니다.

답변3

사용자 세션을 참조한다고 가정하면 실행 중인 화면 세션에 명령을 보내는 옵션과 screen현재 창에 키 입력을 보내는 명령을 사용할 수 있습니다 .-Xstuff

screen -dmS newScreen bash
screen -S newScreen -X stuff "picocom <options>\n"
screen -ls
screen -r <pid>

명령을 실행하려면 다음 줄의 따옴표를 참고하세요.*

bash -c...그것도 가능한지 확인하지 않았습니다 tmux.

관련 정보