Dołącz do wyjścia procesów w celu wyświetlenia
Jak "podłączyć" widok konsoli / terminala do wyjścia aplikacji, aby zobaczyć, co może być napisane?
Jak odłączyć wyjście aplikacji bez zabijania aplikacji?
Normalnie, jeśli odpalisz gadatliwą aplikację za pomocą wiersza poleceń, zobaczysz wszystkie rodzaje wspaniałych wyników. Jednak powiedzmy, że mam szczególnie rozmowny program działa jak KINO i chcę zobaczyć jego wyjście w danym momencie bez ponownego uruchamiania go przez wiersz poleceń nie mogę, przynajmniej Nie wiem jak.
5 answers
Jest tu kilka opcji. Jednym z nich jest przekierowanie wyjścia polecenia do pliku, a następnie użycie 'tail' do przeglądania nowych linii, które są dodawane do tego pliku w czasie rzeczywistym.
Inną opcją jest uruchomienie programu wewnątrz 'screen' , który jest rodzajem tekstowej aplikacji terminalowej. Sesje ekranowe mogą być dołączane i odłączane, ale nominalnie mają być używane tylko przez tego samego użytkownika, więc jeśli chcesz dzielić się nimi między użytkownikami, jest to wielki wrzód na dupie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-03 21:20:31
Myślę, że mam prostsze rozwiązanie, po prostu poszukaj directoy, którego nazwa odpowiada PID, którego szukasz, pod pseudo-systemem plików dostępnym pod ścieżką /proc
. Więc jeśli masz uruchomiony program, którego ID jest 1199, cd do niego:
$ cd /proc/1199
Następnie poszukaj katalogu fd
Pod
$ cd fd
Ten katalog fd
zawiera obiekty deskryptorów plików, których używa twój program (0: stdin, 1: stdout, 2: stderr) i tylko tail -f
Ten, którego potrzebujesz - w tym przypadku, stdout): {]}
$ tail -f 1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-22 14:51:51
Szukałem dokładnie tego samego i znalazłem, że możesz to zrobić:
strace -ewrite -p $PID
Nie dokładnie to, czego potrzebowałeś, ale jest dość blisko
Próbowałem przekierować wyjście, ale to nie działa dla mnie, maby bo proces pisał do gniazda, Nie wiem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-07 13:17:14
Jak "załączyć" a konsola/terminal-widok na aplikacji, dzięki czemu mogę zobaczyć, co to może być powiedzenie?
Jeśli chodzi o to pytanie, wiem, że możliwe jest przechwycenie wyjścia, nawet jeśli nie uruchomiłeś komendy sceen przed uruchomieniem processus.
Chociaż nigdy nie próbowałem, znalazłem ciekawy artykuł, który wyjaśnia, jak to zrobić za pomocą GDB (i bez ponownego uruchamiania twojego proces).
Redirecting-output-from-a-running-process
W zasadzie:
- sprawdź listę otwartych plików dla swojego procesu, dzięki / proc / xxx / fd
- Załącz swój proces za pomocą GDB
- gdy jest on wstrzymany, Zamknij interesujący Cię plik, wywołując close () function (możesz użyć dowolnej funkcji swojego procesu w GDB. Podejrzewam, że potrzebujesz debugowania symboli w swoim procesie..)
- Otwórz nowy plik wywołujący create () lub open () function. (Spójrz w komentarzach na końcu, zobaczysz, że ludzie sugerują użycie dup2 () , aby upewnić się, że ten sam uchwyt będzie w użyciu)
- odłącz proces i pozwól uruchomić.
Przy okazji, jeśli używasz systemu operacyjnego linux na i386 box, komentarze mówią o lepszym narzędziu do przekierowania wyjścia na nową konsolę : 'retty' . Jeśli tak, rozważ jego użycie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-03 22:38:00
Chciałem zdalnie obserwować proces aktualizacji yum, który został uruchomiony lokalnie, więc chociaż prawdopodobnie były bardziej efektywne sposoby, aby to zrobić, oto co zrobiłem:
Watch cat / dev / vcsa1
Oczywiście chcesz użyć vcsa2, vcsa3, itd., w zależności od tego, który terminal był używany.
Tak długo, jak moje okno terminala było tej samej szerokości co terminal, na którym uruchamiane było polecenie, co 2 sekundy widziałem migawkę ich bieżącego wyjścia. Pozostałe komendy polecany gdzie indziej nie działał szczególnie dobrze dla mojej sytuacji, ale ten zrobił sztuczkę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-08 02:40:31