Spodziewam się, że dostanę trochę uwagi, ale nigdzie nie mogę znaleźć odpowiedzi. Wydaje się, że powinno to być takie oczywiste. Czasami, wpisz złe polecenie w terminalu bash, kursor po prostu przeskakuje do następnej linii bez żadnego błędu lub czegokolwiek. Nie mogę powiedzieć, co zrobiłem źle. To tak, jakbym utknął w programie. Rekonstrukcja:

$ tidy 

Ja: „Ups! Nie o to mi chodziło…”

:q 

Ja: „To nie” nie zadziałało … „

:exit :quit exit quit /exit /quit -exit -quit -wtf??? 

Wiem, że schrzaniłem sprawę, ale jak mogę wrócić do monitu bez zamykania terminala?

Komentarze

Odpowiedź

Zawsze możesz wypróbować oczywiste rzeczy, takie jak ^C, ^D (eof), Escape itp., Ale jeśli wszystko zawiedzie, zwykle kończy się zawieszanie polecenie z ^Z (Control-Z), które przenosi mnie z powrotem do powłoki.

Następnie wykonuję polecenie ps i zapisuję PID (identyfikator procesu) polecenia, a następnie wydaję kill thePID (kill -9 thePID jeśli poprzednie nie działało) polecenie zakończenia aplikacji.

Zauważ, że nie jest to uporządkowany ( bez słów) sposób na zamknięcie aplikacji / polecenia i istnieje ryzyko, że prawdopodobnie nie będziesz zapisywać niektórych danych itp.

Przykład (użyłem tidy ale nie mam go zainstalowanego):

$ gnuplot G N U P L O T Version 4.2 patchlevel 6 .... Send bug reports and suggestions to <http://sourceforge.net/projects/gnuplot> Terminal type set to "wxt" gnuplot> gnuplot> ##### typed ^Z here [1]+ Stopped gnuplot $ ps PID TTY TIME CMD 1681 pts/1 00:00:00 tcsh 1690 pts/1 00:00:00 bash 1708 pts/1 00:00:00 gnuplot 1709 pts/1 00:00:00 ps $ kill 1708 ###### didn"t kill the command as ps shows $ ps PID TTY TIME CMD 1681 pts/1 00:00:00 tcsh 1690 pts/1 00:00:00 bash 1708 pts/1 00:00:00 gnuplot 1710 pts/1 00:00:00 ps $ kill -9 1708 ### -9 did the trick $ [1]+ Killed gnuplot $ ps PID TTY TIME CMD 1681 pts/1 00:00:00 tcsh 1690 pts/1 00:00:00 bash 1711 pts/1 00:00:00 ps 

Komentarze

  • To ' tak !! ^ Z na ratunek. Dziękuję bardzo.
  • ^ \ (ctrl-backslash, SIGQUIT) działa w niektórych upartych narzędziach, które nie ' nie odpowiadaj ^ C.
  • Ćśś! Nie ' nie mów ludziom o ^ \ lub ' ll start SIG_IGN ' to też, co wtedy zrobimy?
  • @godlygeek Can you powiedz mi, co oznacza %% w Linuksie lub co to jest? Dużo szukałem.
  • @Noumenon, spójrz na LESS='+/^JOB CONTROL' man bash. %% odnosi się do " aktualnej pracy ".

Odpowiedz

Spróbuj nacisnąć Ctrl D lub Ctrl C . Jeśli to się nie powiedzie, zakończ proces.

Próbując z tidy poleceniem, o którym wspomniałeś, Ctrl D działa.

Komentarze

  • CTRL+C jest również dobre dla Windows CMD.

Odpowiedź

Innym rozwiązaniem (jeszcze niewymienionym) jest wysłanie sygnału SIGQUIT używając ctrl + \

Jest silniejszy niż ctrl + c

Odpowiedź

CTRL + D == exit shell command

i

CTRL + C == terminate the current process, Of course may be the given software handle it and CTRL + D doens"t work

Oczywiście generują kernel signal jeśli chcesz dowiedzieć się więcej, przeczytaj:

man 7 signal 

Komentarze

  • Ctrl + D to koniec pliku, a nie bezpośrednie wyjście.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *