Wymagania wstępne:
Aby wykonać kroki w tym przewodniku, potrzebujesz następujących elementów:
Uruchamianie procesów z terminalu
Za każdym razem, gdy uruchamia polecenie, procesy są odradzane pod terminalem. Jeśli terminal jest zamknięty, wszystkie powiązane procesy są automatycznie zakończone. W niektórych sytuacjach może to być niewygodne. Na przykład:
Aby rozwiązać te problemy, istnieje kilka opcji:
Procesy działające w tle nie przytłaczają wyjścia terminala. Ponadto terminal może uruchomić dodatkowe polecenia. W przypadku procesów odłączonych nie zakończą się, nawet jeśli terminal jest zamknięty.
Uruchamianie procesów w tle
W wielu przypadkach polecenie może zająć sporo czasu. Zasadniczo użytkownik jest zmuszony czekać, aż polecenie zakończy. Na przykład, gdy używasz edytora tekstu, powłoka jest niedostępna do momentu zamknięcia edytora.
Aby zademonstrować, używamy polecenia „Tak”:
$ Man Tak
Metoda 1:
Istnieje kilka sposobów, na których możemy wysłać proces działający na tło.
Najpierw zatrzymujemy proces bez zakończenia. Aby to zrobić, uruchom następujące polecenie i naciśnij „Ctrl + Z”:
$ Tak "Hello World"> /dev /null
Teraz uruchom polecenie „BG”, aby wysłać proces w tle:
$ BG
Po wepchnięciu na tło proces wznawia. Poniższe polecenie zawiera wszystkie działające zadania w tle:
$ Jobs
Metoda 2:
W poprzedniej metodzie proces zaczął działać na pierwszym planie. Zatrzymaliśmy proces, wysłaliśmy go na tło, a następnie wznowiliśmy. Zamiast tego możemy uruchomić proces bezpośrednio w tle.
Aby to zrobić, dodaj znak „&” na końcu polecenia:
$ Tak "Oh Long Johnson"> /dev /null &
Tutaj wywołane procesy automatycznie działają w tle. Aby zweryfikować, sprawdź listę zadań podstawowych:
$ Jobs
Metoda 3:
Możemy również uruchomić procesy w tle za pomocą TMUX, potężnego multipleksera, który może zarządzać wieloma sesjami terminali w jednym oknie. Nie jest wstępnie zainstalowany w Linux. Jest jednak dostępny dla wszystkich głównych dystrybucji Linux. Dowiedz się więcej o instalacji Tmux w Linux.
W poniższym przykładzie używamy TMUX do pingowania celu i rejestrowania danych wyjściowych:
$ tmux new -d 'ping -c 9 127.0.0.1> ping.dziennik'
Plik dziennika sprawdza, czy polecenie uruchomi się pomyślnie, czy nie:
$ cat ping.dziennik
To tylko jeden przykład tego, co Tmux może zrobić. Dowiedz się więcej o Tmux z przykładami.
Zwracanie zadań na pierwszy plan
Jeśli chcesz zwrócić pracę na pierwszym planie, używamy polecenia „FG”. Potrzebujemy również numeru zadania z polecenia zadania.
Najpierw określ pracę, którą chcesz wnieść na pierwszy plan:
$ Jobs
Teraz użyj polecenia „FG”:
$ FG %
Odłączanie procesów od terminalu
Każdy proces powiązany z terminalem jest zakończony po zamknięciu terminalu, niezależnie od tego, czy działa na pierwszym planie, czy na tle. Aby uniknąć zakończenia procesu, odłączamy proces docelowy od terminalu/powłoki.
Metoda 1:
Aby wypędzić proces, najpierw potrzebujemy procesu w tle:
$ Tak "qWerty"> /dev /null &
Sprawdź listę uruchamiających zadań w tle:
$ Jobs
Zwróć uwagę na numer seryjny docelowego zadania w tle. Teraz użyj polecenia „odejście”, aby oddzielić je od terminala:
$ Odnotowanie %
Docelowe zadanie powinno teraz zniknąć z listy zadań:
$ Jobs
Jednak nadal możesz zobaczyć proces działający w tle:
$ Ps Aux
Metoda 2:
Innym sposobem odłączenia procesu od terminalu nadrzędnego jest użycie polecenia „Nohup”. Utrzymuje proces działa w tle nawet po zamknięciu terminalu.
Wykorzystanie „Nohup” jest następujące:
$ nohupI
Sprawdź, czy zadanie jest tworzone pomyślnie:
$ Jobs
Metoda 3:
Ta metoda całkowicie odłącza proces docelowy. To bardziej skuteczny sposób odłączenia aplikacji GUI.
Na przykład, aby uruchomić Firefox i całkowicie odłączyć go od terminala, użyj następującego polecenia:
$ Firefox /dev/null &
Tutaj:
Wniosek
Wykazaliśmy różne sposoby uruchamiania procesu w tle. Zaprezentowaliśmy również sposoby odłączenia procesu od terminalu nadrzędnego. Te techniki mogą być przydatne za każdym razem, gdy pracują z terminalem lub uruchamiając skrypt.
Jeśli chcesz uruchomić określone polecenia w określonym wzorze, możemy go odciążyć jako usługę SystemD. W przypadku maszyn zdalnych możemy również użyć narzędzi innych firm, takich jak Ansible, aby zautomatyzować prawie wszystko.
Szczęśliwy komputer!