W jaki sposób „dołączyłbym” widok konsoli / terminala do danych wyjściowych aplikacji, aby zobaczyć, co on mówi?
Jak odłączyć się od danych wyjściowych aplikacji bez jej zabijania?
Zwykle, jeśli uruchomisz rozmowną aplikację za pomocą wiersza poleceń, zobaczysz wszelkiego rodzaju wspaniałe wyniki. Załóżmy jednak, że mam szczególnie rozmowne programowanie, takie jak KINO, i chcę zobaczyć jego wyjście w dowolnym momencie bez ponownego uruchamiania go z wiersza poleceń. Nie mogę; przynajmniej nie wiem jak.
linux
logging
command-line-interface
aggitan
źródło
źródło
Odpowiedzi:
Jest tu kilka opcji. Jednym z nich jest przekierowanie danych wyjściowych polecenia do pliku, a następnie użycie „tail”, aby wyświetlić nowe wiersze, które są dodawane do tego pliku w czasie rzeczywistym.
Inną opcją jest uruchomienie programu w „ekranie”, który jest rodzajem tekstowej aplikacji terminala. Sesje ekranowe można dołączać i odłączać, ale nominalnie są przeznaczone tylko do użytku przez tego samego użytkownika, więc jeśli chcesz je udostępniać między użytkownikami, jest to duży ból w dupie.
źródło
Myślę, że mam tutaj prostsze rozwiązanie. Po prostu poszukaj katalogu, którego nazwa odpowiada PID, którego szukasz, w pseudosystemie plików dostępnym pod
/proc
ścieżką. Więc jeśli masz uruchomiony program, którego ID to 1199,cd
to:Następnie poszukaj
fd
katalogu poniżejTen
fd
katalog zawiera obiekty deskryptorów plików, których używa twój program (0: stdin, 1: stdout, 2: stderr) i tylkotail -f
ten, którego potrzebujesz - w tym przypadku stdout):źródło
tail
ponieważ w moim przypadku dane wyjściowe zostały przekierowane do innego procesu w celu wprowadzenia danych, alemore
pokazały mi aktualne dane.more
pracuje dla mnie. ubuntu 14.04 w procesie węzłowymSzukałem dokładnie tego samego i stwierdziłem, że możesz:
Nie jest to dokładnie to, czego potrzebujesz, ale jest dość blisko.
Próbowałem przekierować dane wyjściowe, ale to nie zadziałało. Może dlatego, że proces zapisywał do gniazda, nie wiem.
źródło
Jeśli chodzi o to pytanie, wiem, że można przechwycić dane wyjściowe, nawet jeśli nie uruchomiłeś polecenia sceen przed uruchomieniem procesu.
Chociaż nigdy tego nie próbowałem, znalazłem interesujący artykuł, który wyjaśnia, jak korzystać z GDB (i bez ponownego uruchamiania procesu).
przekierowanie-wyjście-z-działającego-procesu
Gruntownie:
Nawiasem mówiąc, jeśli używasz systemu operacyjnego Linux na pudełku i386, komentarze mówią o lepszym narzędziu do przekierowania wyjścia na nową konsolę: „retty” . Jeśli tak, rozważ jego użycie.
źródło
U mnie to zadziałało:
Zaloguj się jako właściciel procesu (nawet
root
odmowa pozwolenia)Dostosuj deskryptor pliku, jak wspomniano w wielu innych odpowiedziach.
źródło
Chciałem zdalnie obserwować proces aktualizacji yum, który był uruchamiany lokalnie, więc chociaż prawdopodobnie istniały bardziej wydajne sposoby na zrobienie tego, oto co zrobiłem:
Oczywiście chciałbyś użyć vcsa2, vcsa3 itp., W zależności od używanego terminala.
Tak długo, jak moje okno terminala miało taką samą szerokość jak terminal, na którym było uruchamiane polecenie, mogłem zobaczyć migawkę ich aktualnego wyjścia co dwie sekundy. Inne polecenia zalecane w innym miejscu nie działały szczególnie dobrze w mojej sytuacji, ale to wystarczyło.
źródło