Czy ktoś może mi powiedzieć różnicę między ctrl+ za ctrl+ c?
Kiedy jestem w terminalu, obie kombinacje zatrzymują bieżący proces, ale jaka dokładnie jest różnica między nimi?
command-line
chaitanya lakkundi
źródło
źródło
Odpowiedzi:
Jeśli zostawimy skrzynie z boku z boku, różnica jest prosta. Control+ Cprzerywa aplikację niemal natychmiast, podczas gdy Control+ Zprzetacza ją w tło, zawieszając.
Powłoka wysyła różne sygnały do podstawowych aplikacji w tych kombinacjach:
Control+ C(znak kontrolny
intr
) wysyła SIGINT, który przerywa aplikację. Zwykle powoduje przerwanie, ale decyzja należy do aplikacji.Control+ Z(znak kontrolny
susp
) wysyła SIGTSTP do aplikacji na pierwszym planie, skutecznie umieszczając go w tle, zawieszając. Jest to przydatne, jeśli chcesz wydostać się z edytora, aby pobrać potrzebne dane. Możesz wrócić do aplikacji, uruchamiającfg
(lub%x
gdziex
jest numer zadania, jak pokazano najobs
).Możemy to przetestować, uruchamiając
nano TEST
, a następnie naciskając Control+, Za następnie uruchamiającps aux | grep TEST
. To pokaże nam, żenano
proces jest nadal uruchomiony:Ponadto możemy zobaczyć (z tej litery T, która znajduje się w kolumnie statusu), że proces został zatrzymany . Więc wciąż żyje, ale nie działa ... Można go wznowić.
Niektóre aplikacje ulegną awarii, jeśli będą miały trwające procesy zewnętrzne (takie jak żądanie sieciowe), które mogą przekroczyć limit czasu podczas snu.
źródło
bg
(zamiastfg
), aby cofnąć zawieszenie aplikacji, która była Ctrl + Z'ed bez umieszczania jej z powrotem na pierwszym planie; skutecznie dając ci kontrolę zarówno nad powłoką, która uruchomiła aplikację, jak i samą aplikacją, tak jakbyś używał jej&
podczas uruchamiania aplikacji. Często przydaje się, gdy zapomniałeś zacząć od&
:)fg
ponownie!ctrl c
lubctrl z
? Domyślnie jest to SID (bash)?Control+ Zzawiesza proces (
SIGTSTP
) i Control+ Cprzerywa proces (SIGINT
)http://en.wikipedia.org/wiki/Control-Z
http://en.wikipedia.org/wiki/Control-C
źródło
Ctrl+ Csłuży do zabicia procesu sygnałem
SIGINT
, innymi słowy jest to grzeczne zabicie .Ctrl+ Z służy do zawieszenia procesu poprzez wysłanie sygnału
SIGTSTP
, który jest jak sygnał uśpienia, który można cofnąć i proces można wznowić ponownie.Jednak gdy proces jest zawieszony, możemy go wznowić przez
fg
(wznowienie na pierwszym planie) ibg
(wznowienie w tle), ale nie mogę wznowić zabitego procesu, to jest różnica między używaniem Ctrl+ Ci Ctrl+ Z.Jak możemy zobaczyć zawieszone procesy?
jobs
Komenda daje wyjście tak:Jak zabić zawieszony proces w tle?
Za pomocą
kill
polecenia:kill %n
gdzien
jest liczbą wyświetlaną przezjobs
polecenie. Więc jeśli chcesz zabić kota:kill %1
.źródło
Mówiąc prosto:
CTRL-C żąda przerwania programu .
CTRL-Z zmusza program do zawieszenia i przejścia w tło .
Umożliwia to wznowienie go później za pomocą polecenia
fg
. Pozostałe zadania w tle są zabijane po wyjściu z powłoki logowania.źródło
To powinno pomóc
źródło
SIGTSTP
, co może zostać złapane przez program. Istnieją cztery różne sygnały, które mogą zawiesić programSIGSTOP
,SIGTSTP
,SIGTTIN
,SIGTTOU
. Tylko tychSIGSTOP
nie można zablokować. Pozostałe trzy są używane przez terminal do zatrzymania procesu w różnych warunkach.kiedy naciśniesz ctrl+ c, oznacza to, że wysyłasz SIGINT do swojego procesu. jak wpisać komendę:
kill -SIGINT <your_pid>
. Zabije cię twój proces. Dlatego nie możesz tego zobaczyć po wydaniu polecenia ps .Kiedy naciśniesz ctrl+ z, oznacza to, że wysyłasz SIGSTOP do swojego procesu. jak wpisać komendę:
kill -SIGKSTOP <your_pid>
. Zatrzyma twój proces, ale proces wciąż żyje. Abyś mógł ponownie aktywować proces, wysyłając SIGCONT do swojego procesu.źródło