저는 tmux 환경을 사용하며 동일한 명령줄 인수를 사용하여 4개의 다른 창(그림의 첫 4개)에서 동일한 Python 스크립트를 실행해야 하는 경우가 많습니다. 하나의 쉘에서 명령을 실행하여 각 쉘에서 스크립트를 실행하는 방법이 있습니까?
나는이 사실을 알고논의하다하지만 그들은 다른 터미널 환경을 사용할 것을 제안했고 저는 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/