2012-09-30 10 views
6

Używam tmux do uruchomienia konsoli serwera. Aby sprawdzić, czy konsola jest odpowiadając, chciałbym użyć send-keys uruchomić komendę w konsoli:Jak uzyskać wynik wysyłania kluczy w tmux?

tmux send-keys -t mysess:mywin "show info" Enter 

(Faktycznie, jestem obecnie zalogowaniu pełnego wyjścia konsoli do pliku i czytając ostatnią linię, ale mam nadzieję, że lepszym rozwiązaniem istnieje.)

tmux pipe-pane -o -t mysess:mywin 'cat >> mysess-mywin.log' 
+0

Spróbuj dodać tag dla systemu operacyjnego używasz - to pomoże innym znaleźć swoje pytanie i odpowiedź to. Tag [tmux] ma tylko 75 obserwujących. – Artemix

+0

Nie zobaczysz wyjścia 'show info', ponieważ pojawi się ono w' mysess: mywin', a nie w oknie, w którym wykonałeś polecenie 'send-keys'. – chepner

Odpowiedz

0

jedna opcja jest wywołanie skryptu z wysyłanie kluczy, który działa „pokaż informacje” i mieć skrypt „send-klucze” back wyniki do sesji tmux jesteś na. działa to tylko wtedy, gdy jesteś w tmux.

4

Kontekst jak łączysz wyjście wpłynie czy to rozwiązanie jest lepsze, czy nie, ale to może działać:

tmux send-keys -t <session:win.pane> '<command>' Enter 
tmux capture-pane -t <session:win.pane> 
tmux show-buffer 

Powinieneś być w stanie grać z -S i -E opcje capture-pane , a także rozmiar panelu, aby dokładnie uchwycić wynik. Jeśli jesteś tak skłonny, możesz również użyć show-panes i małego wyrażenia regularnego, aby uchwycić wysokość panelu, a następnie po prostu użyć -S <height - 1>, aby przechwycić tylko ostatnią linię.

To wtedy prosty czytać to z innego programu jak tak (na przykład w Pythonie):

print Popen(['tmux', 'show-buffer'], stdout=PIPE).communicate()[0] 
Powiązane problemy