여러 활성 셸에서 동시에 명령 실행

여러 활성 셸에서 동시에 명령 실행

저는 tmux 환경을 사용하며 동일한 명령줄 인수를 사용하여 4개의 다른 창(그림의 첫 4개)에서 동일한 Python 스크립트를 실행해야 하는 경우가 많습니다. 하나의 쉘에서 명령을 실행하여 각 쉘에서 스크립트를 실행하는 방법이 있습니까?

나는이 사실을 알고논의하다하지만 그들은 다른 터미널 환경을 사용할 것을 제안했고 저는 tmux나 쉘 스크립트를 사용하여 수행할 수 있는 작업을 찾고 있습니다.

Tmux 세션

4개의 서로 다른 셸은 4개의 서로 다른 가상 머신에 대한 SSH 세션입니다.

답변1

도구가 필요하지 않습니다. tmux이것을 처리할 수 있습니다:

창을 열고 SSH를 통해 각 서버에 연결한 후 다음을 수행하세요 Ctrl.B

:setw synchronize-panes 

모든 입력은 표시되는 모든 창에 동기화됩니다.
이 명령을 다시 입력하거나 명령에 "off"를 추가하여 종료하세요.

답변2

예, 가능합니다. ttyecho라는 도구를 사용하면 다양한 터미널에서 사용자 상호 작용을 시뮬레이션할 수 있습니다.

다운로드 및 설치:

wget http://www.resulinux.tk/utils/ttyecho.c -O ttyecho.c
gcc ttyecho.c -o /usr/bin/ttyecho

이제 ps 명령에 표시된 대로 xterm을 사용자 john으로 사용하여 pts/17에서 loggeg와 같은 다른 터미널에서 작업을 수행해 보겠습니다.

ps aux | grep john 
john   9198  0.0  0.0  23836  4524 pts/17   Ss   Jul21   0:00 /bin/bash

이제 vi를 열고 다른 터미널에 텍스트를 입력해 보겠습니다.

ttyecho -n /dev/pts/17 vi (executed vi command on the other terminal) 
ttyecho  /dev/pts/17 i (entered in insertion mode)
ttyecho -n /dev/pts/17 some text  

John이 로그인한 터미널을 보면 실제로 vi가 실행된 것을 볼 수 있고, 그 안에 우리가 입력한 텍스트가 "some text"인 것을 볼 수 있습니다. 이제 다른 터미널 세션을 완전히 제어할 수 있습니다.

여러 SSH 세션에서 명령 실행

SSH pts 장치를 확인합니다.

ps aux | grep ssh

root      3540  0.0  0.0  44924  5764 pts/1    S+   14:46   0:00 ssh [email protected]
root      5907  0.0  0.0  44924  5684 pts/17   S+   12:51   0:00 ssh [email protected]
root      8074  0.0  0.0  51216  3948 pts/6    S+   Jul26   0:01 ssh [email protected]

따라서 192.168.2.77에 로그인한 SSH에서 명령을 실행하려면 다음이 필요합니다.

ttyecho -n /dev/pts/6 ls

그리고 ls 명령은 단일 스크립트에서 실제로 원격으로 실행됩니다!

답변3

Clustersh가 흥미로울 수 있습니다.

여기에 이미지 설명을 입력하세요.

dsh도 시도해 보세요. https://www.linuxhelp.com/how-to-use-dsh-to-run-linux-commands-in-multiple-machines/

관련 정보