Android

Linux nohup parancs

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

Tartalomjegyzék:

Anonim

A nohup parancs egy másik, argumentumként megadott programot hajt végre, és figyelmen kívül hagyja az összes SIGHUP (hangup) jelet. SIGHUP egy olyan jel, amelyet egy folyamatnak küldünk, amikor a vezérlőterminál bezáródik.

Általában, amikor egy programot futtat SSH-n keresztül, ha a kapcsolat megszakad vagy kijelentkezik, a munkamenet leáll, és a terminálról végrehajtott összes folyamat leáll. Itt hasznos a nohup parancs. Figyelmen kívül hagyja az összes hangup jelet, és a folyamat folytatódni fog.

A nohup parancs használata

A nohup parancs szintaxisa a következő:

nohup COMMAND

A parancs nem fogad el más opciókat, kivéve a szokásos --help és --version .

Vessen egy pillantást a következő példára:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup az előtérben futtatja a mycommand parancsot, és a parancs kimenetét a nohup.out fájlba irányítja. Ezt a fájlt az aktuális működő könyvtárban hozza létre. Ha a parancsot futtató felhasználónak nincs írási jogosultsága a működő könyvtárba, akkor a fájlt a felhasználó saját könyvtárában hozza létre.

Ha kijelentkezik vagy bezárja a terminált, a folyamat nem fejeződik be.

A parancs futtatása a háttérben

A nohup előtérben történő használata nem nagyon hasznos, mert addig nem fog tudni kommunikálni a héjjal, amíg a parancs be nem fejeződik.

A parancs háttérben futtatásához csatolja a & szimbólumot a parancs végére:

nohup mycommand &

A kimenet tartalmazza a héj job azonosítóját (zárójelekkel körülvéve) és a folyamat azonosítóját:

25177

A job ID segítségével a parancs az fg paranccsal kerülhet előtérbe.

Ha valamilyen okból meg akarja fejezni a folyamatot, akkor használja a kill parancsot, amelyet a folyamat azonosítója követ:

kill -9 25132

A kimenet átirányítása egy fájlba

Alapértelmezés szerint a nohup a parancs kimenetét a nohup irányítja. Ha átirányítani szeretné a kimenetet egy másik fájlra, akkor használja a szokásos héj-átirányítást.

Például a normál kimenet és a szabványos hiba átirányításához a használt mycommand.out :

nohup mycommand > mycommand.out 2>&1 &

A szabványos kimenet és a szabványos hiba átirányítása különféle fájlokra:

nohup mycommand > mycommand.out 2> mycommand.err &

alternatívák

Számos alternatív program használható arra, hogy elkerülje a parancs megszüntetését a terminál bezárásakor vagy leválasztásakor.

Képernyő

A Képernyő vagy a GNU képernyő egy terminál multiplexer program, amely lehetővé teszi a képernyőn történő munkamenet elindítását, és tetszőleges számú ablak (virtuális terminál) megnyitását az adott munkameneten belül. A Képernyőn futó folyamatok továbbra is futnak, ha ablaka nem látható, akkor is, ha leválasztják.

Tmux

A Tmux a GNU képernyő modern alternatívája. A Tmux segítségével létrehozhat egy munkamenetet, és több ablakot nyithat meg az adott munkameneten belül. A Tmux munkamenetek tartósak, ami azt jelenti, hogy a Tmux programban futó programok akkor is futnak, ha bezárják a terminált.

Megtagad

disown egy shell buildtin, amely eltávolítja a shell feladatot a shell job vezérléséből. A nohup ellentétben a disown a futó folyamatokban is használható.

Következtetés

nohup lehetővé teszi a parancsok megszüntetését, amikor kijelentkezik vagy kilép a terminálról.

nohup terminál