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 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.