Jak rozpocząć polecenie Linux w tle i odłączyć proces w terminalu
- 4351
- 265
- Roland Sokół
W tym przewodniku ujawnimy prostą, ale ważną koncepcję obsługi procesu w systemie Linuksa, to znaczy całkowicie odłączyć proces od jego terminalu kontrolnego.
Gdy proces jest powiązany z terminalem, mogą wystąpić dwa problemy:
- Twój terminal sterujący jest wypełniony tak dużą ilością danych wyjściowych i komunikatów błędów/diagnostycznych.
- W przypadku zamknięcia terminalu proces wraz z procesami dziecięcymi zostanie zakończony.
Aby poradzić sobie z tymi dwoma problemami, musisz całkowicie odłączyć proces od terminalu kontrolnego. Zanim faktycznie przeprowadzimy się, aby rozwiązać problem, krótko omówmy, jak uruchomić procesy w tle.
Jak rozpocząć proces Linux lub polecenie w tle
Jeśli proces jest już wykonywany, taki jak przykład polecenia TAR poniżej, po prostu naciśnij Ctrl+z
Aby go zatrzymać, a następnie wprowadź polecenie BG
kontynuować wykonanie w tle jako zadanie.
Możesz wyświetlić wszystkie swoje zadania w tle, wpisując Oferty pracy
. Jednak to stdin, Stdout, Stderr są nadal połączone z terminalem.
$ tar -czf dom.smoła.GZ . $ BG $ JobsUruchom polecenie Linux na tle
Możesz również uruchomić proces bezpośrednio z tła za pomocą ampersand, I
podpisać.
$ tar -czf dom.smoła.GZ . & $ oferty pracyRozpocznij proces Linux na tle
Spójrz na poniższy przykład, chociaż polecenie TAR zostało uruchomione jako zadanie w tle, komunikat o błędzie był nadal wysłany do terminala, co oznacza, że proces jest nadal podłączony do terminalu kontrolującego.
$ tar -czf dom.smoła.GZ . & $ oferty pracyProces Linux działający w komunikacie w tle
Utrzymuj procesy Linux działać po wyjściu
Użyjemy zapierać się polecenie, jest używane po uruchomieniu procesu i umieszczonym w tle, jego praca polega na usunięciu zadania powłoki z aktywnych zadań listy Shell, dlatego nie będziesz używać FG
, BG
Polecenia na tej konkretnej pracy.
Ponadto, kiedy zamkniesz terminal sterujący, zadanie nie zawiesi się ani nie wyśle Wzdychanie Do każdej pracy dziecięcej.
Sugerowane przeczytanie: 5 sposobów na utrzymanie zdalnych sesji i procesów SSH
Spójrzmy na poniższy przykład użycia Diswon Bash wbudowana funkcja.
$ sudo rsync szablony/*/var/www/html/files/& $ $ $ DESIN -H %1 $ $Uruchom proces Linux po zamknięciu terminalu
Możesz także użyć Nohup
Polecenie, które umożliwia również proces kontynuowania działania w tle, gdy użytkownik wyjdzie z powłoki.
$ nohup tar -czf ISO.smoła.Szablony GZ/* & $Umieść proces Linux w tle po zamknięciu powłoki
Odłącz procesy Linuksa od kontrolowania terminalu
Dlatego, aby całkowicie odłączyć proces od terminalu sterującego, użyj poniższego formatu polecenia, jest to bardziej skuteczne dla graficznego interfejsu użytkownika (GUI) Zastosowania takie jak Firefox:
$ Firefox /dev /null &
W Linux, /dev/null to specjalny plik urządzenia, który zapisuje (pozbywa się) wszystkie zapisane do niego dane w powyższym polece /dev/null.
Sugerowane przeczytanie: 10 Przykłady polecenia ekranu w celu odłączenia sesji terminalowych
Jako uwaga końcowa, pod warunkiem, że proces jest podłączony do terminalu kontrolującego, jako użytkownik, zobaczysz kilka linii wyjściowych danych procesu, a także komunikaty o błędach na terminalu. Ponownie, kiedy zamkniesz terminal kontrolny, proces procesów i dzieci zostaną zakończone.
Co ważne, w przypadku wszelkich pytań lub uwag na ten temat, skontaktuj się z nami, korzystając z poniższego formularza komentarza.
- « Jak zainstalować lampę z php 7 i mariadb 10 na Ubuntu 16.10
- Instalacja Ubuntu 16.10 (yakkety yak) »