Jeśli jesteś programistą Linuksa, wiesz, jak ważna jest spójność i niezawodność sesji. Długotrwałe procesy w systemie Linux muszą być kontynuowane nawet po wylogowaniu się z sesji. Na szczęście Linux ma do tego funkcjonalne polecenie. The polecenie Nohup pozwala na nieprzerwane wykonywanie poleceń w tle. W ten sposób zapobiega utracie danych i oszczędza cenny czas. Ten przewodnik przeprowadzi Cię przez wszystko, co musisz wiedzieć o poleceniu Nohup w systemie Linux, od jego składni i opcji po praktyczne przykłady i rozwiązywanie typowych błędów.
Zrozumienie składni Nohup systemu Linux
Polecenie Nohup jest łatwe w użyciu i proste. Umożliwia uruchamianie poleceń lub skryptów w tle, dzięki czemu masz pewność, że będą działać nawet po wylogowaniu się z terminala. Oto jak z niego korzystać:
nohup [command] [arguments] &
Powinieneś wymienić [rozkaz] z poleceniem lub skryptem, który chcesz uruchomić. I [argument] to dowolne argumenty lub opcje wymagane przez polecenie. The & symbol wysyła polecenie uruchomienia w tle. Zobaczmy przykład:
nohup myscript.sh &
W tym przykładzie myscript.sh to skrypt basha, który będzie działał nawet po zamknięciu terminala. Dane wyjściowe zostaną przekierowane do pliku o nazwie nohup.out domyślnie, chyba że określisz inną ścieżkę.
Odkrywanie opcji Nohup
Chociaż samo polecenie Nohup nie ma wielu opcji, zrozumienie, jak efektywnie go używać z różnymi poleceniami i technikami przekierowywania, może zwiększyć jego wydajność. Najpierw zobaczmy, jak możemy uzyskać informacje o poleceniu Nohup:
nohup –-help nohup --version
Te dwa polecenia dostarczają przydatnych informacji, pokazując komunikat pomocy i wersję Nohup.
Uruchamianie procesu za pomocą polecenia Nohup
Jeśli chcesz uruchomić proces za pomocą polecenia Nohup, możesz zastosować tę samą strukturę, którą wyjaśniłem w ostatniej sekcji:
nohup [command]
Jeśli chcesz uruchomić proces w tle, po prostu dodaj & do końca swojego polecenia.
Uruchamianie wielu procesów w tle za pomocą polecenia Nohup
A co, jeśli chcesz uruchomić więcej niż jeden proces w tle za pomocą polecenia Nohup?
nohup bash -c '[command A] && [command B]' &
Zastępować [polecenie A] I [polecenie B] z poleceniami, które chcesz uruchamiać w tle. Wyobraź sobie, że chcesz najpierw zaktualizować pakiety systemowe, 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 nieee umożliwia kontynuację procesów aktualizacji i czyszczenia w tle. Dzięki temu zadania związane z konserwacją systemu zostaną wykonane bez konieczności otwierania terminala.
Przekierowanie niestandardowego wyjścia
Dane wyjściowe tego procesu zostaną przekierowane do nohup.out domyślnie. Ale co, jeśli chcesz otrzymać dane wyjściowe inną ścieżką? Oto jak możesz to zrobić:
nohup [command] > [/path/to/new/output.txt]
Pamiętaj o zastąpieniu wartości w [] z żądanym poleceniem i ścieżką pliku.
Łączenie Nohup z innymi poleceniami
Nohup można łączyć z innymi poleceniami i potokami, tworząc potężne łańcuchy poleceń. Zobaczmy taki przykład:
nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &
Tutaj, znajdować polecenie służy do wyszukiwania plików dziennika i grep służy do wyszukiwania terminu „BŁĄD”. Połączone 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 Linuksa w tle.
Typowe błędy i rozwiązywanie problemów
Korzystanie z polecenia Nohup jest ogólnie proste, ale w trakcie tego procesu mogą wystąpić pewne typowe błędy. Zrozumienie tych błędów i wiedza, jak je rozwiązać, może zaoszczędzić czas i frustrację. Zobaczmy więc, jakie są te typowe błędy i jak się po nich poruszać:
Odmowa pozwolenia
Ten błąd występuje, gdy skrypt lub polecenie, które próbujesz uruchomić, nie ma uprawnień do wykonywania. Dane wyjściowe błędu wyglądają następująco: nohup: nie udało się uruchomić polecenia „myscript.sh”: Odmowa 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 rozkaz:
chmod +x myscript.sh nohup ./myscript.sh &
Nie znaleziono polecenia
Ten błąd występuje, jeśli polecenie lub skrypt nie zostanie znaleziony w określonej lokalizacji lub nie jest dostępny w ścieżce. Dane wyjściowe błędu wyglądają następująco: nohup: nie udało się uruchomić polecenia „myscript.sh”: Nie ma takiego pliku ani katalogu
Aby rozwiązać ten błąd, należy sprawdzić, czy polecenie lub skrypt istnieje i znajduje się we właściwym katalogu. Może być konieczne podanie bezwzględnej ścieżki do skryptu:
nohup /path/to/myscript.sh &
Upewnij się także, że polecenie jest zainstalowane i dostępne w Twojej ścieżce.
Brak wyjścia
Czasami możesz zauważyć, że w terminalu lub w pliku wyjściowym nie ma żadnych danych wyjściowych. Jeśli polecenie generuje dane wyjściowe, ale ich nie widzisz, może to oznaczać przekierowanie na ścieżkę inną niż plik domyślny lub może występować problem z uprawnieniami do pliku. Aby rozwiązać ten problem, musisz jawnie określić plik wyjściowy, aby mieć pewność, że zostanie on poprawnie przekierowany:
nohup myscript.sh > output.log 2>&1 &
Na przykład to polecenie przekierowuje zarówno standardowe wyjście, jak i standardowe błędy do pliku o nazwie output.log.
Skrypt nie działa w tle
Czasami wydaje się, że skrypt lub polecenie jest uruchomione, ale nie w tle. Powód jest zazwyczaj prosty. Być może zapomniałeś dodać & symbol na końcu polecenia, aby uruchomić je w tle. Rozwiązanie jest również proste, po prostu upewnij się, że to dodałeś i gotowe.
Proces zawieszający się lub nie odpowiadający
Proces rozpoczęty za pomocą Nohup może się zawiesić lub przestać odpowiadać. Może się to zdarzyć, jeśli proces oczekuje na dane wejściowe lub jeśli występują problemy z zasobami, do których próbuje uzyskać dostęp. Istnieją dwa rozwiązania tego problemu:
- Sprawdź wymagane dane wejściowe: Upewnij się, że polecenie nie wymaga żadnego interaktywnego wprowadzania danych.
- Problemy z zasobami: Sprawdź, czy polecenie ma dostęp do niezbędnych zasobów (np. plików, sieci).
Nadpisywanie Nohup.out
Jeśli uruchamiasz wiele procesów w tle za pomocą polecenia Nohup, możesz niechcący nadpisać nohup.out plik. Aby uniknąć tego problemu, możesz wybrać konkretną ścieżkę dla każdego procesu. W ten sposób każdy proces ma swój unikalny plik wyjściowy, a domyślna ścieżka nie jest zastępowana.
Poznając typowe błędy Nohup i ich rozwiązania, możesz bez problemu korzystać z polecenia Nohup.
Wniosek
Komenda Nohup to świetne narzędzie dla każdego użytkownika Linuksa, który musi uruchamiać procesy w tle, ponieważ zapewnia ciągłość działania procesów 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 polecenia Nohup pozwala efektywnie zarządzać długotrwałymi zadaniami, co zwiększa produktywność i umiejętności zarządzania systemem.
Jeśli jesteś programistą systemu Linux i chcesz zmaksymalizować możliwości korzystania z systemu Linux, rozważ aktualizację do wersji niezawodnej Serwer VPS z Linuksem. Nasza oparta na chmurze usługa VPS oferuje wsparcie 24 godziny na dobę, 7 dni w tygodniu i gwarancję dostępności na poziomie 99,95%, co oznacza, że Twoje aplikacje działają płynnie przez cały czas i możesz uzyskać pomoc o każdej porze dnia. Dzięki solidnej infrastrukturze i niezawodnym zasobom nasz VPS został zaprojektowany tak, aby spełniać wymagania programistów Linuksa. Ponadto możesz mieć preinstalowaną preferowaną dystrybucję Linuksa, dzięki czemu konfiguracja będzie szybka i łatwa. Przenieś swoje projekty linuksowe na wyższy poziom dzięki VPS, który zapewnia moc i elastyczność, których potrzebujesz.
Często zadawane pytania
Jaka jest różnica pomiędzy nieee I &?
nieee zapobiega zakończeniu procesu po wylogowaniu się użytkownika, natomiast & uruchamia proces w tle. Używanie nieee zapewnia kontynuację procesu po wylogowaniu i połączeniu go z & pozwala mu działać w tle.
Dlaczego używa się Nohup?
nieee służy do zapewnienia, że polecenie lub skrypt będzie nadal działać nawet po wylogowaniu użytkownika lub zamknięciu terminala. Jest to niezbędne w przypadku długotrwałych procesów, które muszą pozostać aktywne bez interwencji użytkownika.
Co to jest plik wyjściowy Nohup?
The nohup.out plik jest domyślnym plikiem wyjściowym, w którym Nohup przekierowuje standardowe wyjście i standardowy błąd polecenia. Jeśli nie określono innego pliku wyjściowego, dane wyjściowe polecenia zostaną zapisane w nohup.out w bieżącym katalogu.