Wyślij proces do tła Linux

Wyślij proces do tła Linux
Pracując z graficznymi środowiskami stacjonarnymi, rzadko martwimy się o procesy w tle. Jeśli mamy proces działający na pierwszym planie, możemy szybko odrodzić kolejne okno terminala i kontynuować naszą pracę.

Jeśli jednak jesteś w surowej pocisku terminali, takiej jak SSH, często będziesz martwił się procesami, które zajmują i blokują skorupę, dopóki nie zostaną ukończone, szczególnie na długo działających zadaniach. W tym miejscu wchodzi w grę pojęcie procesów tła i pierwszego planu.

W tym samouczku omówi się, jakie są procesy tła i pierwszego planu, w tym tworzenie i zarządzanie nimi w Linux.

Co to jest proces?

Pozwólcie, że zacznę na poziomie podstawowym: jaki jest proces?

W Linux proces jest instancją programu. Zazwyczaj oznacza to, że każde polecenie lub wykonywalne w skorupce jest procesem.

Istnieją głównie dwa rodzaje procesów:

  • Procesy na pierwszym planie
  • Procesy w tle

Procesy na pierwszym planie są głównie typowymi aplikacjami, które uruchamiamy i wchodzimy w interakcje. Przykładem byłby menedżer plików Nautilus w GNOME. W większości przypadków możemy rozpocząć procesy na pierwszym planie od powłoki lub środowiska stacjonarnego.

Z drugiej strony procesy w tle działają w tle i nie wymagają żadnych danych wejściowych ani interakcji od użytkownika. Przykładem byłby każdy typowy demon Linux.

Jak uruchomić proces w tle

Załóżmy, że mamy proces, który podczas pracy zajmuje sesję powłoki i utrudnia nam wykonywanie poleceń, dopóki nie wyjdzie.

Na przykład, jeśli uruchomimy przeglądarkę Firefox w skorupce, zajmie to sesję do momentu zakończenia procesu.

$ Firefox


Jak widać, dopóki Firefox uruchomi się, monit powłoki jest niedostępny i nie możemy wykonać żadnych poleceń.

Aby to rozwiązać, możemy to zrobić na dwa sposoby:

1: Korzystanie z ampersand (i)

Pierwszą metodą jest użycie ampersand i znaku. To mówi powłoce, aby uruchomiła dowolne polecenie poprzedzające ampersand w tle.

Przykład:

Firefox i

W takim scenariuszu proces wykonuje się w tle i spawnuje się jako nowy monit powłoki, który pozwala nam kontynuować wykonywanie poleceń.

Daje również dwa numeryczne identyfikatory. Pierwszy zamknięty w nawiasach kwadratowych to identyfikator zadania, a następny to identyfikator procesu.

2: Za pomocą Ctrl + Z, polecenie BG.

Następną metodą, której możesz użyć do umieszczenia procesu w tle, jest użycie skrótu Ctrl + Z. To powstrzymuje proces przed blokowaniem skorupy. Następnie możesz użyć polecenia BG, aby popchnąć je na tło.

Na przykład zacznij od uruchomienia Firefox jako:

$ Firefox

Podczas uruchomienia procesu naciśnij Ctrl + Z. To zwraca monit powłoki. Na koniec wprowadź polecenie BG, aby popchnąć proces w tle.

Jak pokazać procesy w tle

Aby przeglądać i zarządzać procesami w tle, użyj polecenia zadań w powłoce. Które pokażą zadania podstawowe w bieżącej sesji terminalu.

Na przykład:

$ Jobs

Przykładowe dane wyjściowe zadań tła:

Aby wprowadzić proces działający na pierwszym planie, użyj polecenia FG, a następnie identyfikatora zadania.

Na przykład, aby wprowadzić zadanie Firefoxa na pierwszym planie, używamy polecenia:

$ FG %1

Aby ponownie umieścić w tle, naciśnij Ctrl + Z, a następnie polecenie BG.

Jak sprawić, by proces trwał po śmierci Shell

Kiedy uruchamiasz procesy w tle, a sesja powłoki umiera, wszystkie powiązane z nim procesy, które mogą być problematyczne, szczególnie jeśli jest to sesja SSH.

Jednak nie jest to zbyt duży problem, jeśli używasz multiplekseru terminalowego, takiego jak Tmux lub ekran, ponieważ w takim przypadku możesz po prostu ponownie ponownie ponownie zwiększyć sesję.

Jeśli jednak uruchomisz sesję powłoki bez multipleksera, możesz użyć polecenia Nohup.

Polecenie NOHUP jest odporne na zawieszenie i może zignorować sygnał westchnienia wysłany do procesu.

Dlatego jeśli uruchomisz polecenie z Nohup, nadal działa, nawet jeśli sesja powłoki przypadkowo umrze.

Na przykład, aby uruchomić Firefox z Nohup, użyj polecenia:

Nohup Firefox &

To uruchomi proces w tle, ponieważ upór końca skorupa.

Możesz uruchomić nową sesję terminalu i wyświetlić zadania w tle. Zobaczysz, że proces wciąż działa w tle.

Wniosek

W tym samouczku omówiliśmy różne sposoby uruchamiania i wysyłania procesów na tło w Linux. Omówiliśmy również, jak wprowadzić proces tła na tle i uprawiać rozłączenie się po zakończeniu skorupy.