터미널 명령은 다른 터미널 명령의 수명 주기를 따릅니다.

터미널 명령은 다른 터미널 명령의 수명 주기를 따릅니다.

내가 달성하고 싶은 것은 bash 스크립트이거나 두 개의 터미널 기반 애플리케이션을 병렬로 실행할 수 있는 bash 라인이 더 좋습니다. 이 명령에 대해 알고 있지만 &;경우에는 두 명령 모두 터미널을 열어두고 제대로 작동하려면 서로 필요하기 때문에 작동하지 않습니다. 이는 극단적인 사례처럼 보일 수 있지만 내 구체적인 사용 사례는 매우 간단하며 많은 유사한 상황에서 도움이 될 수 있다고 생각합니다.

내가 원하는 것은 swo 프로토콜을 사용하여 USB 포트에서 메시지를 구문 분석하는 것이므로 다소 불쾌한 해결 방법은 다음과 같습니다.

  1. 터미널 1을 열고 실행하세요 openocd -f connect_swo.cfg(터미널 1이 멈춤).
  2. 터미널 2를 열고 실행합니다 python3 swo_parser.py(터미널 2가 정지되고 터미널 1이 값을 인쇄합니다).
  3. 그런 다음 두 개의 개별 신호로 ctrl+c두 명령을 모두 종료합니다.

예상되는 솔루션은 다음과 유사합니다.

  1. 마법 명령을 실행하여 연결된 세션과 별도의 세션에서 내 명령을 모두 엽니다.
  2. 하나의 명령으로 ctrl +c두 개의 명령이 종료됩니다.

PS: 슈퍼유저에게 문제를 옮겨야 한다면 댓글을 달아주세요.

답변1

GNU Parallel을 사용하면 다음과 같은 작업을 수행할 수 있습니다.

parallel --tty -j0 ::: 'openocd -f connect_swo.cfg' 'python3 swo_parser.py'

GNU Parallel이 아직 설치되지 않은 경우 다음을 확인하십시오.https://oletange.wordpress.com/2018/03/28/excuses-for-not-installing-gnu-parallel/

답변2

openocdstdin에 연결하기 위해 TTY가 절대적으로 필요하고 나중에 Python 스크립트를 실행해야 하는 경우 지연된 openocd스크립트 실행 시작을 사용하여 실행 순서를 바꿀 수 있습니다.sleep

(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg

Single은 CtrlC둘 다 종료하지 않지만 traps를 사용하여 이 문제를 해결할 수 있는 방법이 있을 수 있습니다. 아니면 비슷한 것:

(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg
kill %1

답변3

비슷한 프로그램을 사용하세요동시에

관련 정보