GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi nohoup a ampersand

nohup zachytí signál zavěšení (viz man 7 signal ), zatímco ampersand ne (kromě toho, že je shell takto nakonfigurován nebo neodesílá SIGHUP vůbec).

Obvykle při spuštění příkazu pomocí & a po opuštění shellu shell ukončí dílčí příkaz signálem hangup (kill -SIGHUP <pid> ). Tomu lze zabránit pomocí nohup , protože zachytí signál a ignoruje ho, takže nikdy nedosáhne skutečné aplikace.

V případě, že používáte bash, můžete použít příkaz shopt | grep hupon abyste zjistili, zda váš shell posílá SIGHUP svým podřízeným procesům nebo ne. Pokud je vypnutá, procesy se neukončí, jak se zdá ve vašem případě. Více informací o tom, jak bash ukončuje aplikace, naleznete zde.

Existují případy, kdy nohup nefunguje, například když proces, který spustíte, znovu připojí SIGHUP signál, jako je tomu v tomto případě.


myprocess.out & spustí proces na pozadí pomocí subshell. Pokud je aktuální shell ukončen (řekněme odhlášením), všechny podshelly jsou také ukončeny, takže by byl ukončen i proces na pozadí. Příkaz nohup ignoruje HUP signál a tedy i když je aktuální shell ukončen, subshell a myprocess.out bude nadále běžet na pozadí. Dalším rozdílem je, že & sám o sobě nepřesměruje stdout/stderr, takže pokud dojde k nějakému výstupu nebo chybě, zobrazí se na terminálu. nohup na druhou stranu přesměruje stdout/stderr na nohup.out nebo $HOME/nohup.out .


Většinu času se přihlašujeme ke vzdálenému serveru pomocí ssh. Pokud spustíte skript shellu a odhlásíte se, proces je ukončen. Nohup pomáhá pokračovat ve spouštění skriptu na pozadí i po odhlášení ze shellu.

Nohup command name &
eg: nohup sh script.sh &

Nohup zachytí signály HUP. Nohup nedává úlohu automaticky do pozadí. Musíme to říct explicitně pomocí &


Linux
  1. Jaký je rozdíl mezi Redhat a centOS?

  2. Jaký je rozdíl mezi fsck a e2fsck?

  3. Jaký je rozdíl mezi ls a l?

  1. Jaký je rozdíl mezi $(CC) a $CC?

  2. Jaký je rozdíl mezi unlink a rm?

  3. Jaký je rozdíl mezi trasou a ip trasou?

  1. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  2. Rozdíl v použití mezi proměnnými shellu a proměnnými prostředí?

  3. Jaký je rozdíl mezi Git Switch a Checkout?