내가 달성하고 싶은 것은 bash 스크립트이거나 두 개의 터미널 기반 애플리케이션을 병렬로 실행할 수 있는 bash 라인이 더 좋습니다. 이 명령에 대해 알고 있지만 &
제 ;
경우에는 두 명령 모두 터미널을 열어두고 제대로 작동하려면 서로 필요하기 때문에 작동하지 않습니다. 이는 극단적인 사례처럼 보일 수 있지만 내 구체적인 사용 사례는 매우 간단하며 많은 유사한 상황에서 도움이 될 수 있다고 생각합니다.
내가 원하는 것은 swo 프로토콜을 사용하여 USB 포트에서 메시지를 구문 분석하는 것이므로 다소 불쾌한 해결 방법은 다음과 같습니다.
- 터미널 1을 열고 실행하세요
openocd -f connect_swo.cfg
(터미널 1이 멈춤). - 터미널 2를 열고 실행합니다
python3 swo_parser.py
(터미널 2가 정지되고 터미널 1이 값을 인쇄합니다). - 그런 다음 두 개의 개별 신호로
ctrl+c
두 명령을 모두 종료합니다.
예상되는 솔루션은 다음과 유사합니다.
- 마법 명령을 실행하여 연결된 세션과 별도의 세션에서 내 명령을 모두 엽니다.
- 하나의 명령으로
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
openocd
stdin에 연결하기 위해 TTY가 절대적으로 필요하고 나중에 Python 스크립트를 실행해야 하는 경우 지연된 openocd
스크립트 실행 시작을 사용하여 실행 순서를 바꿀 수 있습니다.sleep
(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg
Single은 CtrlC둘 다 종료하지 않지만 trap
s를 사용하여 이 문제를 해결할 수 있는 방법이 있을 수 있습니다. 아니면 비슷한 것:
(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg
kill %1
답변3
비슷한 프로그램을 사용하세요동시에