Obslužný program nohup spustí příkazový řádek, takže příkaz běží i po vašem odhlášení. Jinými slovy nohup způsobí, že proces ignoruje signál SIGHUP. V závislosti na tom, jak je nakonfigurován místní shell, může být proces spuštěný bez nohup a běžící na pozadí při odhlášení zabit.
Syntaxe pro spuštění příkazu nohup
Základní příkazová sytaxe pro spuštění příkazu nohup je následující:
# nohup command_with_options &
Jakýkoli výstup z vaší úlohy bude přesměrován do souboru s názvem ‘ nohup.out ’, pokud pomocí
neurčíte jinak
# nohup command > myout.file 2>&1
který odešle veškerý výstup do souboru myout.file.
Uložení výstupu příkazu nohup
Pokud nepřesměrujete výstup z příkazu, který provedete pomocí nohup, standardní výstup i standardní chyba budou odeslány do souboru s názvem nohup.out v pracovním adresáři. Pokud nemáte oprávnění k zápisu do pracovního adresáře, nohup odešle výstup na ~/nohup.out .
Výstup můžete také odeslat do jakéhokoli jiného souboru, který určíte, jak je uvedeno výše v syntaxi příkazu.
Příklady
1. Spuštění nohup bez zadání výstupního souboru
Udělejme příklad a otestujte, že skutečně funguje i po odhlášení. Spustíme skript s názvem script.sh. Kontakt skriptu je následující:
# cat script.sh #!/bin/sh while(true) do echo "Hello World!" sleep 10 done
Spusťte skript v backgroupd pomocí příkazu nohup:
# nohup script.sh & [1] 179 $ nohup: appending output to `nohup.out`
Jak můžete vidět výše, nespecifikovali jsme výstupní soubor. Standardní výstup a standardní chyba tedy ve výchozím nastavení přejdou do souboru nohup.out v adresáři, odkud byl skript vyvolán. Také číslo 179 Zadáno ID procesu (PID) úlohy. Toto PID lze ověřit na výstupu příkazu „ps -ef“, jak je uvedeno níže.
Nyní ukončete shell, znovu se přihlaste a spusťte následující příkaz:
$ ps x | grep script.sh 179 ? S N 0:01 sh /root/script.sh 506 p2 S 0:00 grep script.sh
Skript stále funguje. Použijte „ps -ef | grep ps1”, pokud váš systém nepodporuje ps x. Další potvrzení můžete také zkontrolovat ve výstupním souboru nohup.out.
# cat nohup.out Hello World! Hello World! Hello World! Hello World! ...POZNÁMKA :Pokud spustíte jiný příkaz pomocí nohup, výstup se připojí k existujícímu souboru nohup.out. Při spouštění více příkazů ze stejného adresáře buďte opatrní, protože veškerý výstup je odeslán do stejného souboru nohup.out, což může být matoucí.
Spuštění nohup s určením výstupního souboru
Nyní lze výše uvedený skript také spustit příkaz nohup a zadat vlastní výstupní soubor, jak je znázorněno níže:
# nohup script.sh > /tmp/script.out 2>&1 [1] 14235
Závěr
Pokud spouštíte proces a myslíte si, že nebude dokončen v době, kdy se pro daný den odhlásíte, použijte příkaz nohup. Nohup bude pokračovat ve zpracování, když opustíte svůj účet. Nohup znamená nezavěšovat .