Příkaz nohup (“no hangup”) zabraňuje ukončení procesu, když se uživatel odhlásí. Pokud například správce spustí záložní skript a poté se odhlásí ze systému, skript se zastaví. Umístěním příkazu nohup před normální příkaz by skript pokračoval i po odhlášení správce.
Syntaxe
Syntaxe příkazu nohup je:
# nohup {command/script}
Pokud při spouštění příkazu nohup narazíte na níže uvedenou chybu:
nohup: command not found
můžete zkusit nainstalovat níže uvedený balíček podle vaší volby distribuce:
Distribuce | Příkaz |
---|---|
OS X | brew install coreutils |
Debian | apt-get install coreutils |
Ubuntu | apt-get install coreutils |
Alpine | apk add coreutils |
Arch Linux | pacman -S coreutils |
Kali Linux | apt-get install coreutils |
CentOS | yum install coreutils |
Fedora | dnf install coreutils |
Raspbian | apt-get install coreutils |
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 .