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.out
se používá jako výchozí soubor pro stdout a stderr.