Jeśli jesteś deweloperem Linux, wiesz, jak ważna jest spójność i niezawodność sesji. Długotrwałe procesy w Linux muszą kontynuować pracę nawet po wylogowaniu się z sesji. Na szczęście Linux ma do tego celu odpowiednie polecenie. komenda nohup pozwala utrzymywać polecenia uruchomione bez przerw w tle. W ten sposób zapobiega utracie danych i oszczędza cenny czas. Ten poradnik przeprowadzi cię przez wszystko, co musisz wiedzieć o poleceniu nohup w Linux, od jego składni i opcji po praktyczne przykłady i rozwiązywanie typowych błędów.
Zrozumienie składni Linux nohup
Polecenie nohup jest proste i intuicyjne. Pozwala uruchamiać polecenia lub skrypty w tle, dzięki czemu masz pewność, że będą się wykonywać nawet po wylogowaniu się z terminala. Oto jak z niego korzystać:
nohup [command] [arguments] &
Powinieneś zastąpić [command] poleceniem lub skryptem, który chcesz uruchomić. A [argument] to dowolne argumenty lub opcje wymagane przez polecenie. Symbol & wysyła polecenie do uruchomienia w tle. Oto przykład:
nohup myscript.sh &
W tym przykładzie, myscript.sh to skrypt bash, który będzie się wykonywać nawet jeśli zamkniesz terminal. Wyjście zostanie przekierowane do pliku o nazwie nohup.out domyślnie, chyba że określisz inną ścieżkę.
Poznawanie opcji nohup
Polecenie nohup samo w sobie nie ma wielu opcji, ale zrozumienie, jak efektywnie go używać z różnymi poleceniami i technikami przekierowania, może poprawić jego wydajność. Najpierw zobaczmy, jak możemy uzyskać informacje o poleceniu nohup:
nohup –-help nohup --version
Te dwa polecenia dostarczają przydatnych informacji, wyświetlając wiadomość pomocy i wersję nohup.
Uruchamianie procesu za pomocą polecenia nohup
Jeśli chcesz uruchomić proces za pomocą polecenia nohup, możesz zastosować strukturę, którą wyjaśniłem w poprzedniej sekcji:
nohup [command]
Jeśli chcesz uruchomić proces w tle, po prostu dodaj & na końcu polecenia.
Uruchamianie wielu procesów w tle za pomocą polecenia nohup
A co jeśli chcesz uruchomić w tle więcej niż jeden proces za pomocą polecenia nohup?
nohup bash -c '[command A] && [command B]' &
Zamień [command A] i [command B] poleceniami, które chcesz uruchomić w tle. Wyobraź sobie, że chcesz najpierw zaktualizować pakiety systemu, a następnie wyczyścić niepotrzebne pliki i chcesz to zrobić za pomocą polecenia nohup:
nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &
W tym przykładzie, nohup pozwala zarówno procesowi aktualizacji, jak i czyszczeniu działać w tle. Twoje zadania konserwacji systemu zostaną wykonane bez konieczności utrzymywania otwartego terminala.
Przekierowanie niestandardowego wyjścia
Wyjście tego procesu zostanie przekierowane do nohup.out domyślnie. Ale co jeśli chcesz otrzymać wyjście w innej ścieżce? Oto jak to zrobić:
nohup [command] > [/path/to/new/output.txt]
Pamiętaj, aby zastąpić wartości w [] z wybranym poleceniem i ścieżką pliku.
Łączenie nohup z innymi poleceniami
nohup można łączyć z innymi poleceniami i potokami, tworząc zaawansowane łańcuchy poleceń. Oto przykład:
nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &
Here is the translation to Polish: Tutaj, (Note: This appears to be an incomplete phrase. If you have the full text, I can provide a more complete translation.) znajdź polecenie służy do wyszukiwania plików dziennika i grep służy do wyszukiwania terminu "ERROR". Łączne dane wyjściowe są przekierowywane do error_logs.txt.
W tej sekcji omówiliśmy najczęstsze opcje i przypadki użycia polecenia nohup. Opanowując te instrukcje, możesz efektywnie używać nohup do uruchamiania procesów Linux w tle.
Typowe błędy i rozwiązywanie problemów
Komenda nohup jest zazwyczaj prosta w użyciu, ale możesz napotkać kilka typowych błędów. Zrozumienie tych błędów i wiedzenie, jak je rozwiązywać, zaoszczędzi ci czasu i frustracji. Zobaczmy więc, jakie to błędy i jak się z nimi mierzyć:
Dostęp zabroniony
Ten błąd pojawia się, gdy skrypt lub polecenie, które próbujesz uruchomić, nie ma uprawnień do wykonania. Komunikat błędu wygląda następująco: nohup: nie udało się uruchomić polecenia 'myscript.sh': brak uprawnień
Aby rozwiązać ten problem, musisz upewnić się, że skrypt lub polecenie ma odpowiednie uprawnienia. Możesz dodać uprawnienia do wykonywania za pomocą chmod Ten SAM string został przetłumaczony na arabski jako: ':' Więc wiesz, że JEST tłumaczalny, a nie nazwa marki. Przetłumacz na polski teraz. Zwróć TYLKO tłumaczenie, bez cudzysłowów, bez komentarza: polecenie:
chmod +x myscript.sh nohup ./myscript.sh &
Polecenie nie znalezione
Ten błąd pojawia się, jeśli polecenie lub skrypt nie znajduje się w podanej lokalizacji lub nie jest dostępny w zmiennej PATH. Komunikat błędu wygląda następująco: nohup: nie udało się uruchomić polecenia 'myscript.sh': Nie ma takiego pliku lub katalogu
Aby rozwiązać ten błąd, sprawdź, czy polecenie lub skrypt istnieje i znajduje się w odpowiednim katalogu. Możliwe, że będziesz musiał podać pełną ścieżkę do skryptu:
nohup /path/to/myscript.sh &
Upewnij się też, że polecenie jest zainstalowane i dostępne w zmiennej PATH.
Brak wyniku
Czasami możesz zauważyć, że w terminalu lub w pliku wyjściowym nic się nie pojawia. Jeśli polecenie generuje output, ale go nie widzisz, może być przekierowany do innej ścieżki niż domyślny plik albo mogą być problemy z uprawnieniami do pliku. Aby rozwiązać ten problem, musisz jawnie określić plik wyjściowy, aby upewnić się, że output zostanie prawidłowo przekierowany:
nohup myscript.sh > output.log 2>&1 &
Na przykład ta komenda przekierowuje zarówno standardowe wyjście, jak i standardowe błędy do pliku o nazwie output.log.
Skrypt nie uruchomiony w tle
Czasami skrypt lub polecenie wydaje się działać, ale nie w tle. Zwykle przyczyna jest prosta. Możliwe, że zapomniałeś dodać & symbol na końcu polecenia, aby uruchomić je w tle. Rozwiązanie jest proste - upewnij się, że dodałeś ten symbol i gotowe.
Proces wiszący lub nieresponsywny
Proces uruchomiony za pomocą nohup może się zawieszać lub stać się niereagujący. Dzieje się tak, gdy proces czeka na dane wejściowe lub gdy nie może uzyskać dostępu do zasobów, których potrzebuje. Problem można rozwiązać na dwa sposoby:
- Sprawdź wymagane dane wejściowe: Upewnij się, że polecenie nie wymaga żadnych danych wejściowych od użytkownika.
- Problemy z zasobami: Sprawdź, czy polecenie ma dostęp do wymaganych zasobów (np. pliki, sieć).
Nadpisywanie pliku nohup.out
Jeśli uruchamiasz wiele procesów w tle za pomocą polecenia nohup, możesz przypadkowo nadpisać nohup.out pliku. Aby uniknąć tego problemu, możesz wskazać inną ścieżkę dla każdego procesu. Dzięki temu każdy proces ma własny plik wyjściowy i domyślna ścieżka nie zostanie nadpisana.
Poznając typowe błędy nohup i ich rozwiązania, będziesz w stanie bez problemu korzystać z polecenia nohup.
Wnioski
Komenda nohup to doskonałe narzędzie dla każdego użytkownika Linux, który musi uruchamiać procesy w tle. Gwarantuje, że procesy będą działać nawet po wylogowaniu. W tym przewodniku omówiliśmy podstawową składnię, zbadaliśmy różne opcje i omówiliśmy typowe błędy wraz ze wskazówkami dotyczącymi rozwiązywania problemów. Opanowanie komendy nohup pozwala efektywnie zarządzać długotrwałymi zadaniami, co podnosi twoją produktywność i umiejętności zarządzania systemem.
Jeśli jesteś deweloperem Linux i chcesz maksymalnie wykorzystać swoje doświadczenie z Linux, rozważ uaktualnienie do niezawodnego Linux VPS. Nasza usługa VPS oparta na chmurze oferuje wsparcie 24/7 i gwarancję dostępności 99,95%, co oznacza, że Twoje aplikacje działają bezproblemowo przez cały czas, a Ty możesz uzyskać pomoc o każdej porze dnia. Dzięki stabilnej infrastrukturze i niezawodnym zasobom, nasza usługa VPS została zaprojektowana, aby spełnić wymagania programistów Linux. Dodatkowo możesz mieć preinstalowaną wybraną dystrybucję Linux, co sprawia, że konfiguracja jest szybka i łatwa. Przenieś swoje projekty Linux na wyższy poziom dzięki usłudze VPS, która zapewnia moc i elastyczność, których potrzebujesz.
Często zadawane pytania
Jaka jest różnica między nohup i &?
nohup uniemożliwia procesowi zakończenie się, gdy użytkownik się wyloguje, natomiast & uruchamia proces w tle. Użycie nohup zapewnia, że proces będzie kontynuowany po wylogowaniu, a połączenie go z & pozwala mu działać w tle.
Dlaczego używa się nohup?
nohup służy do zapewnienia, że polecenie lub skrypt będzie działać nawet po wylogowaniu się użytkownika lub zamknięciu terminala. Jest niezbędne dla długotrwałych procesów, które muszą pozostać aktywne bez interwencji użytkownika.
Co to jest plik nohup.out?
Trwałość nohup.out jest domyślnym plikiem wyjściowym, do którego nohup przekierowuje standardowe wyjście i błędy standardowe polecenia. Jeśli nie zostanie określony inny plik wyjściowy, dane wyjściowe polecenia są zapisywane w nohup.out w bieżącym katalogu.