zazwyczaj gdy uruchamiasz polecenie w terminalu, musisz poczekać, aż polecenie zakończy się, zanim będziesz mógł wprowadzić inne. Nazywa się to uruchomieniem polecenia w procesie pierwszoplanowym lub pierwszoplanowym. Gdy proces działa na pierwszym planie, zajmuje powłokę i można z nią wchodzić w interakcje za pomocą urządzeń wejściowych.

Co zrobić, jeśli wykonanie polecenia zajmie dużo czasu, a w międzyczasie będziesz chciał uruchomić inne polecenia? Masz do dyspozycji kilka opcji., Najbardziej oczywistą i prostą opcją jest rozpoczęcie nowej sesji powłoki i uruchomienie w niej polecenia. Inną opcją jest uruchomienie polecenia w tle.

proces w tle to proces / polecenie uruchamiane z terminala i uruchamiane w tle, bez interakcji użytkownika.

w tym artykule omówimy procesy w tle to Linux. Pokażemy Ci jak uruchomić polecenie w tle i jak utrzymać proces uruchomiony po zamknięciu sesji powłoki.,

Uruchom polecenie Linuksa w tle #

aby uruchomić polecenie w tle, Dodaj symbol ampersand (&) na końcu polecenia:

command &

identyfikator zadania powłoki (otoczony nawiasami) i identyfikator procesu zostanie wydrukowany na terminalu:

 25177

możesz mieć wiele procesów działających w tle w tym samym czasie.

proces w tle będzie kontynuował zapisywanie wiadomości do terminala, z którego wywołano polecenie., To suppress the stdout and stderr messages use the following syntax:

command > /dev/null 2>&1 & 

>/dev/null 2>&1 means redirect stdout to /dev/null and stderr to stdout .,/div>

aby przenieść proces w tle na pierwszy plan, użyj polecenia fg:

fg

Jeśli masz wiele zadań w tle, Dołącz % I ID zadania po poleceniu:

fg %1

aby zakończyć proces w tle, użyj polecenia kill, po którym następuje ID procesu:

kill -9 25177

przenieś proces pierwszoplanowy do tła #

aby przenieść uruchomiony proces pierwszoplanowy w tle:

  1. zatrzymaj proces wpisując Ctrl+Z.,
  2. Przenieś zatrzymany proces do tła, wpisując bg.

utrzymuj procesy działające w tle po zakończeniu powłoki #

Jeśli połączenie zostanie przerwane lub wylogujesz się z sesji powłoki, procesy działające w tle zostaną zakończone. Istnieje kilka sposobów na utrzymanie działania procesu po zakończeniu sesji powłoki interaktywnej.,

jednym ze sposobów jest usunięcie zadania z kontrolki zadania powłoki za pomocą disown wbudowana powłoka:

disown

Jeśli masz więcej niż jedno zadanie w tle, Dołącz % I ID zadania po poleceniu:

iv id

potwierdź, że zadanie zostanie usunięte z tabeli aktywnych zadań za pomocą polecenia jobs -l. Aby wyświetlić listę wszystkich uruchomionych procesów, w tym wyłączonych, użyj polecenia ps aux.,

innym sposobem utrzymania procesu działającego po zakończeniu powłoki jest użycienohup.

polecenienohup wykonuje inny program podany jako jego argument i ignoruje wszystkie sygnałySIGHUP (hangup). SIGHUP jest sygnałem, który jest wysyłany do procesu, gdy jego terminal sterujący jest zamknięty.

aby uruchomić polecenie w tle używając polecenianohup, wpisz:

nohup command &

wyjście polecenia jest przekierowywane do plikunohup.out.,

nohup: ignoring input and appending output to 'nohup.out'

Jeśli wylogujesz się lub zamkniesz terminal, proces nie zostanie zakończony.

alternatywy #

istnieje wiele programów, które pozwalają mieć wiele interaktywnych sesji w tym samym czasie.

Screen #

Screen lub GNU Screen to program do multipleksowania terminali, który pozwala na rozpoczęcie sesji screen i otwarcie dowolnej liczby okien (wirtualnych terminali) wewnątrz tej sesji. Procesy uruchomione na ekranie będą nadal działać, gdy ich okno nie będzie widoczne, nawet jeśli zostaniesz rozłączony.,

Tmux #

Tmux jest nowoczesną alternatywą dla GNU screen. Dzięki Tmux możesz również utworzyć sesję i otworzyć wiele okien wewnątrz tej sesji. Sesje Tmux są trwałe, co oznacza, że programy działające w tmux nadal działają, nawet jeśli zamkniesz terminal.

podsumowanie #

aby uruchomić polecenie w tle, Dołącz& na końcu polecenia.

kiedy uruchamiasz polecenie w tle, nie musisz czekać, aż zakończy się, zanim będziesz mógł wykonać kolejne.

Articles

Dodaj komentarz

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