Při ukončení shellu systému Linux jsou všechny běžící procesy obvykle ukončeny nebo zavěšeny. Co tedy uděláte, pokud stále chcete, aby procesy běžely i po opuštění shellu/terminálu? Zde se nachází příkaz nohup přichází.
Příkaz Nohup
Nohup, zkratka pro no hang up je příkaz v systémech Linux, který udržuje procesy v chodu i po opuštění shellu nebo terminálu.
Nohup zabraňuje procesům nebo úlohám přijímat signál SIGHUP (Signal Hang UP). Toto je signál, který je odeslán procesu při zavření nebo opuštění terminálu. V této příručce se podíváme na příkaz nohup a předvedeme, jak jej lze použít.
Syntaxe příkazu Nohup
Syntaxe příkazu Nohup je následující;
nohup command arguments NEBO
nohup options Podívejme se, jak příkaz vstupuje do hry
Kontrola verze Nohup
Můžete začít kontrolou verze Nohup pomocí syntaxe níže
nohup --version Výstup

Spuštění procesu pomocí Nohup
Chcete-li ponechat své procesy/úlohy spuštěné, před příkazem uveďte nohup Jak je ukázáno níže. Úlohy budou stále pokračovat v běhu v shellu a nebudou ukončeny při opuštění shellu nebo terminálu.
nohup ./hello.sh Výstup

Z výše uvedeného výstupu byl výstup příkazu uložen do nohup.out pro ověření tohoto běhu,
cat nohup.out Výstup

Navíc se můžete rozhodnout přesměrovat výstup do jiného souboru, jak je znázorněno
nohup ./hello.sh > output.txt Ještě jednou pro zobrazení souboru run
cat output.txt Výstup

Pro přesměrování na soubor a na standardní chybu a výstup použijte > filename 2>&1 atribut, jak je uvedeno
nohup ./hello.sh > myoutput.txt >2&1 Výstup

Spuštění procesu na pozadí pomocí Nohup
Chcete-li spustit proces na pozadí, použijte & symbol na konci příkazu. V tomto příkladu odešleme příkaz ping na adresu google.com a odešleme ji na pozadí.
nohup ping google.com & Výstup

Pro kontrolu procesu při obnovení shellu použijte pgrep příkaz, jak je znázorněno
pgrep -a ping Výstup

Pokud chcete zastavit nebo ukončit běžící proces, použijte kill příkaz následovaný ID procesu, jak je znázorněno
kill 2565 Výstup

Shrnutí
- Všechny procesy, které jsou spuštěny pomocí příkazu nohup, budou ignorovat signál SIGHUP i po opuštění shellu.
- Jakmile je úloha spuštěna nebo spuštěna pomocí příkazu nohup, stdin nebude uživateli k dispozici.
- Ve výchozím nastavení je
nohup.outse používá jako výchozí soubor pro stdout a stderr.