Jak przeglądać i uruchamiać procesy działające w tle systemu Linux

Wykonywanie procesów ma kluczowe znaczenie w każdym używanym systemie operacyjnym, ponieważ zapewniają, że zarówno aplikacje, jak i inne elementy systemu operacyjnego mogą działać prawidłowo, zarówno pod względem zgodności, jak i wykonywania swoich funkcji.

Każdy system operacyjny może inaczej obsługiwać procesy, ale w przypadku Linuksa z reguły procesy są skojarzone z terminalem. Oznacza to, że musi być otwarty, aby proces mógł działać normalnie, ale ta akcja może prowadzić do takich sytuacji, jak:

  • Otwarty terminal może zawierać wiele danych wyjściowych lub komunikatów o błędach / diagnostycznych, co utrudnia nie tylko odczyt danych, ale także zarządzanie nimi.
  • Gdybyśmy zamknęli terminal, proces wraz z jego wtórnymi procesami zakończy się bezpośrednio wpływając na zadanie do wykonania.

W tego typu scenariuszu istotne jest wykonanie niezbędnych procesów w tle, proces w tle to proces, który będzie wykonywany w sposób ukryty i do jego działania nie jest wymagana interwencja użytkownika, w ten sposób chociaż terminal jest zamknięty, proces będzie kontynuował wykonywanie swojego zadania. Procesy w tle dotyczą tych zadań, które mogą zająć trochę czasu, takich jak skrypty, pobieranie plików i inne, w przypadku których nie możemy czekać na zakończenie akcji bez robienia czegokolwiek.

W linuxie możemy wykonywać procesy na pierwszym planie lub w tle. Program na pierwszym planie, gdy jest wykonywany w terminalu, nie będziemy mogli wykonać żadnego innego polecenia, dopóki proces się nie zakończy, ale można to zrobić w tle lub w tle.

Program, który po uruchomieniu działa w tle, nie korzysta z terminala od momentu uruchomienia do końca. Aby wykonać oprogramowanie lub polecenie w tle z terminala, dodajemy Jeśli dodamy znak ampersand (&) na końcu polecenia lub skryptu, który chcemy wykonać, zostanie on wykonany w tle przez system operacyjny. Przykład:

 nano i 
Solvetic wyjaśni, w jaki sposób możemy zobaczyć i uruchomić procesy w tle w systemie Linux.

1. Zobacz listę procesów z poleceniem ps w Linuksie


Za pomocą polecenia ps możemy poznać stan procesu, a Ps to stan procesu lub stan procesu. Polecenie ps nie wyświetla listy procesów i określa niektóre kolumny PID, TTY, TIME i CMD.

PID (numer procesu)Każdy proces otrzymuje unikalny numer identyfikacyjny, który jest przypisywany przez jądro Linuksa.

TTYjest terminalem powiązanym z procesem, może to być również inne urządzenie wejściowe.

CZASCzas trwania procesu.

CMDJest to nazwa wykonywanego polecenia, bash to proces powłoki.

Na przykład polecenie ps -A pokaże nam wszystkie uruchomione procesy.

2. Uruchom proces lub polecenie w tle w systemie Linux za pomocą bg w systemie Linux


Polecenie bg zostało opracowane jako polecenie kontroli zadań, które wznawia zawieszone zadania, ale uruchamia je w tle.

Krok 1
Podstawowa składnia tego polecenia jest następująca:

 bg [praca] 
Krok 2
W przypadku, gdy proces jest już uruchomiony, musimy nacisnąć następujące klawisze, aby go zatrzymać, a następnie wprowadzić polecenie bg, aby kontynuować jego wykonywanie w tle jako zadanie. W tym przykładzie użyjemy następujących linii:

Ctrl + Z

 tar -czf home.tar.gz. (uruchomienie procesu, który zostanie zatrzymany klawiszem Ctrl+Z) bg (wykonanie polecenia w tle) zadania (wizualizacja wykonanych zadań)

Krok 3
Widzimy, że proces nadal trwa, ale teraz w tle. Możliwe będzie również uruchomienie procesu bezpośrednio w tle, wprowadzając znak ampersand na jego końcu:

 tar -czf home.tar.gz. & Oferty pracy 

3. Zapisz uruchomione procesy Linuksa po wyjściu z terminala w Linuksie


Jest to istotna kwestia, ponieważ, jak wspomnieliśmy, w trybie normalnym, gdy terminal jest zamknięty, wszystkie aktywne procesy kończą się, dzięki czemu można pozwolić im na kontynuowanie działania, nawet gdy terminal jest zamknięty.

W tym celu możemy użyć polecenia disown , które zostanie użyte po uruchomieniu procesu i jego umieszczeniu w tle, polecenie disown jest zadaniem powłoki, którego zadaniem jest eliminacja zadań z aktywnej listy aktywnego Powłoki .

Krok 1
Po wykonaniu disown, gdy zamkniemy terminal, zadanie nie ulegnie awarii ani nie wyśle ​​SIGHUP do żadnego zadania podrzędnego. Jego podstawowa składnia to:

 odrzucić ID zadania 
Krok 2
Do jego działania wykonamy:
 sudo rsync Templates / * / var / www / html / files / & (polecenie do wykonania) zadania (zadania aktywne) disown -h% 1 (polecenie nie zamykania procesu lub polecenia) zadania (wyświetlanie zadań)

NotatkaW przypadku wykonywania więcej niż jednego procesu lub polecenia widzimy, że każdy z nich otrzymuje identyfikator identyfikacyjny, należy go wpisać z disown, aby określić, który proces będzie działał dalej.

Krok 3
Opcje, których można użyć z wyrzeczeniem, to:

-doUsuwa wszystkie zadania, jeśli nie podano identyfikatora zadania.

-hZaznacza każdy identyfikator zadania, aby SIGHUP nie był wysyłany do zadania, jeśli powłoka odbierze SIGHUP.

-rCzyści tylko uruchomione zadania.

4. Zapisz uruchomione procesy Linuksa po wyjściu z terminala w Linuksie


Podstawowym zadaniem polecenia nohup jest zapobieganie automatycznemu anulowaniu polecenia podczas wylogowania lub wyjścia z powłoki. Podczas używania polecenia nohup (no hangup), sygnał zawieszenia (HUP), który jest wysyłany do procesu w celu poinformowania go, że użytkownik się wylogował, jest przechwytywany przez nohup, aby umożliwić procesowi kontynuowanie działania w ciągu kilku sekund.

Krok 1
Składnia użycia jest następująca:

 polecenie nohup [polecenie-argument …] 
Krok 2
W tym przypadku użyjemy następującego przykładu. Jeśli standardowym wejściem jest terminal, nohup przekierowuje je z / dev / null. Dlatego wejście terminala nie jest możliwe podczas uruchamiania polecenia z nohup. W przypadku, gdy standardowym wyjściem jest terminal, wyjście polecenia jest dodawane do pliku nohup.out lub $ HOME / nohup.out. Jeśli standardowym błędem jest terminal, jest on przekierowywany na standardowe wyjście. Aby zapisać wynik do pliku, musimy użyć polecenia „nohup command> file”.
 nohup tar -czf iso.tar.gz Szablony / * i zadania

5. Odłącz proces Linuksa w terminalu

Krok 1
Jeśli celem jest całkowite oddzielenie procesu od terminala, powinniśmy użyć następującej składni:

 aplikacja / deweloper / null & 
Krok 2
Na przykład:
 firefox / dev / null & 

6. Używaj procesów w tle z Screen w systemie Linux


W przypadku użycia polecenia w tle, z opcjami nohup i &), zostanie ono wykonane nawet po zamknięciu sesji, problem polega na tym, że gdy ponownie połączymy się z tą samą sesją, nie zobaczymy aktywnego zadania w tło, aby to poprawić, jest polecenie screen.

screen to pełnoekranowy menedżer okien, który zarządza fizycznym terminalem pomiędzy kilkoma procesami, zwykle powłoki są interaktywne. Każdy wirtualny terminal oferuje funkcje terminala DEC VT100 oraz dodatkowo kilka funkcji kontrolnych standardów ISO 6429 (ECMA 48, ANSI X3.64) i ISO 2022, dzięki czemu jest niezwykle dynamiczny.

Kiedy uruchamiamy screen, pojedyncze okno jest tworzone za pomocą powłoki lub określonego polecenia, a następnie pomijane, aby móc normalnie korzystać z programu.

Krok 1
Aby zainstalować screen w Linuksie, wykonamy co następuje. Tam wpisujemy literę S, aby potwierdzić pobranie i instalację.

 ekran instalacji sudo apt

Krok 2
Po zainstalowaniu wykonujemy polecenie „screen” i zobaczymy:

Krok 3
Tam wciskamy klawisz Enter, aby zostać przekierowanym do nowego okna, w którym wykonujemy proces lub polecenie do użycia w tle:

 sudo tar czf temp.tar.gz / tmp & 

Krok 4
Będziemy mogli zwizualizować aktywne okna za pomocą. Aby wyjść z sesji screen możemy użyć klawiszy

Ctrl + a + d

Ctrl + alt + d

 ekran -ls 

7. Zatrzymaj lub zabij proces zawieszony lub działający w tle w systemie Linux


Do tej akcji, która polega na zakończeniu wykonywania procesu w tle, możemy użyć komendy "zabij" i zamiast PID podać identyfikator zadania, np.:
 zadania (wymień bieżące zadania) kill% 2 (zabij lub zakończ proces identyfikowany jako 2)

8. Zatrzymaj proces lub przenieś proces w tło


Niektóre programy kończą się bardzo długo iw międzyczasie nie robią nic ważnego. Jednym z tych zadań jest kompilowanie programów, podobnie jak kompresowanie dużego pliku. Nie ma sensu przerywać korzystania z komputera, gdy te procesy kończą się i zużywają zasoby. W takich przypadkach lepiej jest uruchamiać je w tle, aby pozostawić komputer w stanie uruchomić inny program.

Procesy mogą zostać zawieszone. Zawieszony proces to taki, który nie jest aktualnie uruchomiony, ale został tymczasowo zatrzymany. Po zawieszeniu zadania możesz poinstruować zadanie, aby było kontynuowane, na pierwszym planie lub po drugie, w zależności od potrzeb. Wznowienie zawieszonego zadania w ogóle nie zmienia statusu zadania, ponieważ będzie ono kontynuowane w miejscu, w którym zostało przerwane.

Krok 1
Aby przerwać proces, używana jest następująca kombinacja, po naciśnięciu tej kombinacji proces umiera i wszystkie zasoby są zwalniane.

Ctrl + C

Krok 2
Spróbujmy wysłać powtarzające się polecenie w tle. Polecenie yes służy do testowania skryptu, który wymaga wielu potwierdzeń.To, co robi, to powtarzanie „i” z tym, co jest przed nim napisane w nieskończoność, dopóki skrypt nie zostanie zatrzymany lub użytkownik go zatrzyma:

  • Jeśli wpiszemy „tak” w terminalu i zobaczymy niekończącą się listę „i”.
  • Jeśli wpiszemy yes hello w terminalu i zobaczymy niekończącą się listę hello

Krok 3
Aby usunąć plik bez naciskania żadnego klawisza, gdy prosi o potwierdzenie, możemy użyć

 tak | rm -i * .txt 
Krok 4
Aby wysłać proces do tła, wywołujemy go z wiersza poleceń, a następnie & tworzymy nieskończone urządzenia zerowe
 tak> / dev / null & 
Krok 5
To pokaże nam numer zadania i pid [1] 4106. Jeśli teraz użyjemy polecenia jobs, zobaczymy
 [1] + Wykonywanie tak> / dev / null &
Krok 6
aby wydobyć go na pierwszy plan piszemy fg 1 i zabijamy proces kill 4106 czyli pid.
 Fg 1 Zabij 4106
Za pomocą dowolnej ze wskazanych opcji możliwe będzie zarządzanie procesami w tle w systemie Linux w znacznie bardziej scentralizowany sposób, a tym samym umożliwienie wykonywania wymaganych zadań nawet po zamknięciu sesji.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave