터미널 창에서 여러 Bash 스크립트를 동시에 실행하는 방법은 무엇입니까?

터미널 창에서 여러 Bash 스크립트를 동시에 실행하는 방법은 무엇입니까?

여러 Bash 스크립트를 동시에 실행해야 합니다(정확하게 말하면 변수가 다른 동일한 스크립트). 탭 수를 제어하기 위해 터미널 탭에 그룹화하고 싶습니다.

스크립트는 정기적으로 출력되며 문제가 있는지 확인합니다.

백그라운드로 보내면

./script.sh 1 &
./script.sh 2 &
./script.sh 3 &
./script.sh 4

Ctrl나는 그들을 통제할 수 없게 될 것입니다. 예를 들어 + 를 통해 스크립트를 종료합니다 C. 위의 코드를 사용하여 pid각 프로세스를 종료 해야 합니다 .

./all_scripts.sh위의 코드는 터미널에 입력한 명령이 아니라 내 기본 스크립트(예:)의 내용입니다 .

단일 출력 스크립트로 처리하면서 동일한 터미널에서 스크립트를 실행하는 방법이 있습니까?

답변1

당신은 그들에 대한 통제력을 잃지 않을 것입니다. (마지막 항목 제외)을 배경으로 보냅니다.

지정된 명령 체인을 실행하면 호출이 ./script.sh 4포그라운드에서 실행되고 다른 스크립트는 백그라운드에서 실행됩니다. 입력이 프런트엔드 스크립트로 전송됩니다. 전경 스크립트를 일시 중지하려면 을 누릅니다 CtrlZ. 계속 실행하기 위해 보류 중인 스크립트를 백그라운드로 보내려면 이 bg명령을 사용하십시오.

현재 가지고 있는 스크립트(또는 더 정확하게는 작업)와 그 상태를 확인하려면 를 사용하세요 jobs.

특정 채용정보를 눈에 띄게 만들려면 fg해당 번호(위에 보고된 대로 )를 접두사 와 jobs함께 사용하세요. 특정 작업을 종료하려면 해당 작업을 전면으로 가져와 현명 하게 종료 할 수 있습니다 .%fg %2fgkillkill -TERM %2

답변2

다양한 방법과 절차를 테스트한 후 실용적인 해결책은 다음과 같습니다.GNU 병렬. 이 답변은 다른 사람들에게 도움이 될 수 있기 때문에 게시합니다.

GNU Parallel이 작업을 위해 제작되지는 않았지만 그 목적을 완벽하게 수행합니다.

다음과 같이 스크립트를 실행하면

parallel -u ::: './script.sh 1' './script.sh 2' #(and so forth)

모든 스크립트는 병렬로 실행됩니다.

-u( ) 플래그는 스크립트를 실행할 때 --ungroup스크립트 출력을 보냅니다 .stdout

Ctrl+ 작업과 이후에 실행 중인 모든 스크립트를 C종료합니다 .parallel

답변3

tmux이런 목적 으로 사용할 수 있습니다 .

이는 하나의 탭을 여러 창으로 분할하는 것을 의미하는 터미널 멀티플렉서입니다.

  • 명령을 사용하여 시작하십시오 tmux.
  • 하나의 창을 두 개의 창으로 분할하려면 Contr+B 다음에 "또는 를 사용하세요 .%
  • 포그라운드에서 프로세스를 시작합니다.
  • Contr프로세스 간을 전환하려면 uding + B및 화살표 키를 사용하세요.

이제 터미널의 단일 탭에서 일반적으로 여러 프로세스를 제어할 수 있습니다.

특정 창에 초점을 맞추거나 초점을 맞추지 않으려면 Contr+ B뒤에 를 사용하세요 Z.

스크롤이 필요한 경우 Contr+를 B누른 다음 Q화살표 키를 사용하여 스크롤합니다(또는 마우스 모드 활성화).

치트 시트를 찾을 수 있습니다여기.

프로세스를 자동화할 수도 있습니다.

답변4

작업 백그라운드 처리기가 이러한 요구를 충족할 수 있습니다. https://vicerveza.homeunix.net/~viric/soft/ts/article_linux_com.html

데비안과 우분투에서는 별칭 "tsp"를 사용하여 도구를 찾을 수 있습니다.

관련 정보