Každý príkaz v Linuxe spúšťa proces v čase jeho vykonania, ktorý sa automaticky ukončí po opustení terminálu. Predpokladajme, že spúšťate programy cez SSH a ak sa spojenie preruší, relácia sa ukončí, všetky spustené procesy sa zastavia a môžete čeliť obrovskej náhodnej kríze. V takýchto prípadoch môže byť spustenie príkazov na pozadí pre používateľa veľmi užitočné, a to je miesto príkaz nohup prichádza do obrazu. nohup (žiadne zavesenie) je príkaz v systémoch Linux, ktorý spúšťa proces aj po odhlásení z shellu/terminálu.
Príkaz Nohup
Zvyčajne sa každý proces v systémoch Linux odosiela a SIGHUP (zavesenie signálu) ktorý je zodpovedný za ukončenie procesu po zatvorení/opustení terminálu. Príkaz Nohup zabraňuje procesu prijať tento signál pri zatvorení alebo opustení terminálu/plášťa. Po spustení alebo vykonaní úlohy pomocou príkazu nohup, stdin nebudú pre používateľa dostupné a nohup.out súbor sa používa ako predvolený súbor pre stdout a stderr . Ak je výstup príkazu nohup presmerovaný do iného súboru, nohup.out súbor sa nevygeneruje.
Syntax príkazu Nohup
Syntax na použitie príkazu Nohup je jednoduchá:
pivot sql servera
nohup command [options] &>
-
`command`>: Určuje príkaz alebo skript, ktorý chcete spustiť. -
`[options]`>: Voliteľné argumenty alebo príznaky, ktoré upravujú správanie príkazu. -
`&`>: Umiestnenie znaku ampersand (&) na koniec príkazu dáva príkazu shell spustiť príkaz na pozadí.
Práca s príkazom nohup
- Kontrola verzie Nohup
- Spustenie procesu pomocou Nohup
- Spustenie procesu na pozadí pomocou Nohup
- Spustenie viacerých príkazov na pozadí
Kontrola verzie Nohup
Kontrola verzie Nohup je jednoduchý proces. Verziu Nohup nainštalovanú vo vašom systéme môžete zvyčajne skontrolovať pomocou súboru ` --version`> vlajka. Stačí vykonať nasledujúci príkaz:
nohup --version>
Výkon:
Spustenie procesu pomocou Nohup
Ak chcete spustiť proces pomocou Nohup, jednoducho pridajte požadovaný príkaz snohup>. Napríklad, ak chcete spustiť bash skript s názvomgeekfile.py>pomocou Nohup by ste použili nasledujúci príkaz:
nohup bash geekfile.sh>
Výkon:
aktuálny dátum v jazyku java
Na presmerovanie výstupu na output.txt súbor:
nohup bash geekfile.sh>output.txt>
Výkon:
pothineni baran
Spustenie procesu na pozadí pomocou Nohup
Ak chcete spustiť príkaz na pozadí, „ &' symbol sa pridá na koniec príkazu. Po vykonaní sa po spustení príkazu na pozadí nevráti do príkazového riadka shellu. Môže sa vrátiť do popredia pomocou fg príkaz.
nohup bash geekfile.sh & fg>
Výkon:
Poznámka: Číslo v hranatých zátvorkách predstavuje ID práce a číslo vedľa je ID procesu .
Spustenie viacerých príkazov na pozadí
Príkaz nohup možno použiť na spustenie viacerých príkazov na pozadí.
nohup bash -c 'commands'>
Príklad:
nohup bash -c 'cal && ls'>
Výkon:
Tu bude výstup štandardne uložený v nohup.out . Ak ho chcete presmerovať, zadajte:
nohup bash -c 'commands'>názov_súboru.txt>
Príklad:
nohup bash -c 'cal && ls'>output.txt>
Výkon:
program v jave
Príkaz nohup v systéme Linux – najčastejšie otázky
Čo je nohup> príkaz v Linuxe a čo robí?
The
nohup>príkaz znamená zákaz zavesenia. Umožňuje vám spustiť príkaz alebo skript shellu takým spôsobom, že bude pokračovať aj po odhlásení alebo zatvorení terminálu. Tým sa zabráni ukončeniu príkazu po ukončení relácie terminálu.čítanie zo súboru csv v jazyku Java
Ako môžem použiť nohup> príkaz?
Použit
nohup>, jednoducho ho pridajte pred príkaz, ktorý chcete spustiť. Napríklad:nohup command_to_run &>The
&>symbol na konci presunie príkaz do pozadia, čo vám umožní pokračovať v používaní terminálu počas spustenia príkazu.
Kde nohup> poslať výstup príkazu?
Predvolene,
nohup>presmeruje štandardný výstup (stdout) aj štandardnú chybu (stderr) do súboru s názvomnohup.out>v aktuálnom adresári. V prípade potreby môžete zadať iný výstupný súbor.
Môžem použiť nohup> s interaktívnymi príkazmi alebo programami?
Zatiaľ čo
nohup>sa zvyčajne používa s neinteraktívnymi príkazmi alebo skriptami, môžete ho použiť s interaktívnymi príkazmi. Správanie však môže byť nepredvídateľné, najmä ak príkaz očakáva vstup od používateľa. Vo všeobecnosti sa odporúča vyhnúť sa používaniunohup>s interaktívnymi programami.
Ako môžem skontrolovať stav spusteného príkazu s nohup> ?
Od r
nohup>spustí príkaz na pozadí, môžete použiť štandardné nástroje Linuxu, ako naprps>alebotop>na kontrolu stavu procesu. Napríklad:ps aux | grep>Zobrazí sa vám informácie o procese vrátane jeho PID (ID procesu), ktoré potom môžete použiť na správu alebo monitorovanie príkazu.
Záver
V Linuxe, keď spustíte príkaz, zvyčajne sa zastaví, keď zatvoríte terminál. Ale s nohup> , môžete ho nechať spustený aj po zatvorení terminálu. Je to veľmi užitočné, najmä ak spúšťate príkazy na diaľku a nechcete, aby sa zastavili, ak vaše pripojenie prepadne.nohup>funguje tak, že chráni váš príkaz pred signálmi, ktoré by ho normálne zastavili. Stačí pridaťnohup>pred vaším príkazom a pokračuje. Výstup príkazu môžete odoslať aj do súboru. Nezabudnite, že je to najlepšie pre neinteraktívne úlohy a stav príkazu môžete skontrolovať pomocou nástrojov, ako je naprps>. takže,nohup>je ako záchranná sieť pre vaše príkazy, ktorá zaisťuje, že sa budú motať, aj keď sa nepozeráte.