nohup (od ang. no hangup) uruchamia polecenie tak, by ignorowało sygnał SIGHUP — ten, który system wysyła do procesów, gdy zamykasz terminal albo zrywa się sesja SSH. Dzięki temu twój skrypt, backup czy długi import bazy nie padnie tylko dlatego, że wyłączyłeś laptopa albo padło ci łącze. To narzędzie z pakietu GNU coreutils, dostępne praktycznie na każdym Linuksie i w POSIX, więc nie musisz nic instalować.
Składnia i najważniejsze opcje
Podstawowa składnia jest banalna: nohup polecenie [argumenty] &
Sam nohup ma tylko dwie własne flagi — cała reszta „opcji” to operatory powłoki, którymi sterujesz wejściem/wyjściem:
--help— wyświetla krótką pomoc i kończy działanie.--version— pokazuje wersję narzędzia.&— to nie flaganohup, tylko znak powłoki: uruchamia proces w tle, oddając ci z powrotem konsolę.> plik.log— przekierowuje standardowe wyjście do wskazanego pliku zamiast domyślnegonohup.out.2>&1— kieruje standardowe błędy (stderr) do tego samego miejsca co stdout, żeby mieć wszystko w jednym logu.2> bledy.log— zapisuje same błędy osobno, jeśli wolisz je trzymać oddzielnie.
Jeśli nie przekierujesz wyjścia samodzielnie, nohup dopisze je do pliku nohup.out w bieżącym katalogu (a gdy ten jest niezapisywalny — do $HOME/nohup.out).
Przykłady użycia
nohup ./backup.sh & — uruchamia skrypt w tle; logi wpadają do nohup.out.
nohup python3 trener.py > trening.log 2>&1 & — odpala proces, a cały output (i błędy) zapisuje do trening.log.
nohup ./serwer &> /dev/null & — startuje proces i wyrzuca całe wyjście do kosza, gdy logi cię nie interesują.
nohup rsync -av /dane/ serwer:/kopia/ > rsync.log 2>&1 & — bezpieczna synchronizacja dużych danych przez SSH, odporna na zerwanie sesji.
nohup wget -c https://przyklad.pl/duzy.iso & — pobieranie, które przetrwa wylogowanie.
Częste błędy i pułapki
Najczęstsza wpadka: zapominasz o & na końcu i proces dalej blokuje terminal — nohup chroni przed SIGHUP, ale nie wysyła nic w tło sam z siebie. Druga: szukasz logów i nie wiesz, gdzie są — domyślnie to nohup.out w katalogu, z którego odpaliłeś polecenie. Pamiętaj też, że nohup nie odłącza procesu od grupy tak skutecznie jak disown czy setsid — przy bardzo wybrednych powłokach proces wciąż może dostać sygnał przy zamknięciu. I uwaga na kill: nohup ignoruje tylko SIGHUP, więc SIGTERM albo SIGKILL nadal go ubiją.
Powiązane komendy: &, disown, setsid, screen, tmux, jobs, bg, kill.