Czasami, gdy mój terminal zawiesza się i nie pozwala mi pisać. Nie mogę zidentyfikować żadnych przyczyn ani sposobu diagnozowania. Jakieś sugestie?
Dzięki!
GNOME Terminal 2.30.2 na Ubuntu 10.04
Czasami, gdy mój terminal zawiesza się i nie pozwala mi pisać. Nie mogę zidentyfikować żadnych przyczyn ani sposobu diagnozowania. Jakieś sugestie?
Dzięki!
GNOME Terminal 2.30.2 na Ubuntu 10.04
Odpowiedzi:
Dobry ogólny sposób diagnozowania tajemniczych zawieszeń:
ps axo pid,wchan:32,cmd
aby znaleźć inny identyfikator procesuwchan
kolumnę, która powinna ci powiedzieć, czy utknął w jądrzesudo strace -p PID
wstawiając pid tego procesu; wklej to do raportu o błędzie lub pytaniaJeśli jest coś oprócz kreski w kolumnie wchan, to proces polega na tym, że jądro coś robi. Niektóre typowe wartości:
futex_wait_queue_me
- oczekiwanie na futexie na kolejny wątek w tym samym procesie poll_schedule_timeout
- czekanie na komunikację sieciową lub międzyprocesową lub po prostu spanie przez chwilępipe_wait
- czytanie / pisanie fajkiIstnieją tysiące możliwości, więc nie mogę wymienić ich wszystkich. Zobacz, jaki jest „kanał oczekiwania” procesu? po więcej.
wchan
oznacza proces czeka w jądrze. Jeśli pozostaje tam przez długi czas i nie ma żadnego dobrego powodu, aby słuchać sieci io, wtedy utknie. ;)
Czy nacisnąłeś kiedyś Ctrl + S? Jest to klawisz pauzy terminala, który zatrzymuje wszystkie dane wyjściowe, dopóki nie naciśniesz Ctrl-Q, aby wznowić.
top
w terminalu, powinieneś być w stanie łatwo zlokalizować problem.