Chciałbym napisać skrypt do jednoczesnego otwierania wielu programów (serwerów) w osobnych terminalach - nie ma znaczenia, który - i przypisywać różne polecenia do różnych terminali z poleceniami „lądującymi” wewnątrz właściwego terminala. czy to możliwe?
Może coś takiego:
- otwórz terminal 1
- otwórz terminal2 // jednocześnie z 1.
- polecenie1 // wykonaj w terminalu 1 bez otwierania nowego okna terminalu
- polecenie2 // wykonaj w terminalu 2 bez otwierania nowego okna terminalu
- ...
Czy mogę w jakiś sposób oznaczyć okna terminala, aby polecenia były wykonywane w odpowiednim terminalu?
Chciałbym również oglądać wszystkie terminale podczas działania ich programów - moje programy mają argument do drukowania śledzenia / debugowania na terminalu. Chciałbym więc zobaczyć, jakie wiadomości są między nimi wymieniane.
UWAGA: Jestem mniej zaniepokojony bezpieczeństwem wymienianych danych, ponieważ ten skrypt powinien służyć jako „symulacja”. Skonfigurowałem każdy serwer, aby działał z przydzielonego portu na localhost.
źródło
Odpowiedzi:
Ponieważ wspomniałeś, że rozwiązałeś problem w konkretnej sytuacji, poniżej rozwiązania ogólnego zastosowania. Dzięki
xdotool
„s--sync
opcja działa całkiem niezawodny w testach wpadłem; Mogłem „wysyłać” polecenia do określonych okien terminali i działało idealnie bez wyjątku.Jak to działa w praktyce
Rozwiązanie istnieje ze skryptu, który można uruchomić za pomocą dwóch opcji
-set
i-run
:Aby skonfigurować (otworzyć) dowolną liczbę okien terminali, w tym przykładzie 3:
Otworzą się trzy nowe terminale, ich identyfikator okna zostanie zapamiętany w ukrytym pliku:
Dla jasności zminimalizowałem okno terminala, z którego uruchomiłem polecenie :)
Teraz, gdy utworzyłem trzy okna, mogę wysyłać polecenia do jednego z nich za pomocą polecenia uruchamiania (np.):
Jak pokazano poniżej, polecenie uruchomiono w drugim terminalu:
Następnie mogę wysłać polecenie do pierwszego terminala:
podejmowania
sudo apt-get update
uruchomić w terminalu 1:i tak dalej...
Jak skonfigurować
Skrypt potrzebuje zarówno
wmctrl
axdotool
:Skopiuj poniższy skrypt do pustego pliku, zabezpiecz go jako
target_term
(bez rozszerzenia!) W~/bin
(w~/bin
razie potrzeby utwórz katalog) .Ustaw skrypt jako wykonywalny (nie zapomnij) i wyloguj się / zaloguj lub uruchom:
Teraz skonfiguruj okna terminala, podając liczbę wymaganych okien jako argument:
Teraz możesz „wysłać” polecenia do jednego z terminali za pomocą polecenia:
Scenariusz
Notatki
Skrypt jest ustawiony
gnome-terminal
, ale można go używać w dowolnym terminalu (lub innym programie), zmieniającapplication
sekcję „head” skryptu:Nie trzeba mówić, że skrypt działa tylko z konfiguracją terminala (Windows), która została wywołana przez polecenie:
Okna terminala zostaną wówczas „oznaczone” przez skrypt, tak jak wspomniałeś w swoim pytaniu.
target_term
sesji ukryty plik utworzony przez skrypt zostanie po prostu nadpisany, więc nie ma potrzeby usuwania go w inny sposób.źródło