Kiedy próbuję zamknąć kartę w Gnome Terminal, mówi:
Zamknąć ten terminal? W tym terminalu nadal działa proces. Zamknięcie terminalu go zabije.
Jak mogę dowiedzieć się, co nadal działa? Zauważ, że nie ma nic w danych wyjściowych jobs
. Dzięki.
Kiedy próbuję zamknąć kartę w Gnome Terminal, mówi:
Zamknąć ten terminal? W tym terminalu nadal działa proces. Zamknięcie terminalu go zabije.
Jak mogę dowiedzieć się, co nadal działa? Zauważ, że nie ma nic w danych wyjściowych jobs
. Dzięki.
screen
,tmux
,script
,ssh
,mc
i odwrócił się panele, czy tylko kolejny przykład Shell od typowaniabash
, lub coś wzdłuż tych linii. Naciśnij Ctrl + D lub wpisz,exit
aby wyjść z powłoki, zobaczysz, gdzie skończysz.exit
karta terminalu gnome nie zamyka się.exit
prawdopodobnie go wtedy zamknie. @egmont, możesz przenieść to do odpowiedzi, proszę.Odpowiedzi:
Wybiera wszystkie procesy związane z terminalem.
źródło
nohup
polecenia są odłączone od terminala, więc nie blokuj jego zamykania. Ale nadal są wymienione za pomocą tego polecenia.Możesz zdobyć szczyt w procesach, które wymieniają PID twojej powłoki jako nadrzędną. Jak możesz wiedzieć, możemy określić
ps
formatTutaj otrzymujemy PID powłoki ze specjalnej zmiennej
$$
naSHELLPID
, która następnie może być użyta przez awk w podpowłoce potoku. Zasadniczo wymieniamy tylko procesy w postaci NAZWA, PID, nadrzędny PID i odfiltrowujemy tylko tych, którzy mają odpowiedni PID w ostatniej kolumnie.źródło
Jeśli uruchomiłeś jakiś proces w terminalu (np. Gedit) niż ID procesu (PID) (bash) i ID procesu nadrzędnego (PPID) (gedit) dla tych dwóch procesów będą takie same. Można to zobaczyć na wyjściu
Komenda. Aby był bardziej czytelny, najpierw „potokuj” wyjście, aby
grep
znaleźć PID wszystkich aktualnie uruchomionych procesów „bash”, a następnie „potokuj” go ponownieawk
. Wawk
wybiera tylko PID i pola nazwę procesu (pole 2 i 8), i przekazuje je na ekranie.ps -ef | grep bash | awk '{print $2 ": " $8}'
Liczba na wyjściu to PID. Użyjesz go, aby znaleźć proces rozpoczęty w terminalu, który ma ten PID. Zauważ, że może być więcej niż jeden wiersz wyjścia, jeśli masz więcej niż jeden terminal otwarty. Teraz, aby znaleźć procesy „potomne” (jeśli w ogóle) tych sesji terminalowych, możemy użyć tego polecenia:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
Musisz podać numer PID zamiast EnterPID w ostatnim poleceniu. Jeśli dla „bash” istnieje więcej niż jeden PID, musisz wypróbować je wszystkie.
Ostatnie polecenie po prostu sprawdza dane wyjściowe
ps -ef
i sprawdza, czy PID (znaleziony w poprzednim poleceniu) i PPID są takie same dla dowolnego procesu.Więcej informacji:
człowiek ps
człowiek awk
źródło
Możesz użyć
htop
. W Ubuntu 16.04 (i nowszych) możesz go zainstalować, piszącsudo apt-get install htop
.Możesz także użyć
top
.źródło
htop
?