általában amikor parancsot futtat a terminálon, meg kell várnia, amíg a parancs befejeződik, mielőtt beírhat egy másikat. Ezt úgy hívják, hogy futtatja a parancsot az előtérben vagy az előtérben. Amikor egy folyamat fut az előtérben, akkor elfoglalja a héjat, és a beviteli eszközök segítségével kölcsönhatásba léphet vele.
mi van, ha a parancs hosszú időt vesz igénybe a befejezéshez, és közben más parancsokat is futtatni szeretne? Számos lehetőség áll az Ön rendelkezésére., A legnyilvánvalóbb és legegyszerűbb lehetőség egy új shell munkamenet indítása, valamint a parancs futtatása. Egy másik lehetőség a parancs futtatása a háttérben.
a háttérfolyamat egy olyan folyamat / parancs, amely egy terminálról indul, és a háttérben fut, a felhasználó interakciója nélkül.
ebben a cikkben a háttérfolyamatokról beszélünk Linux. Megmutatjuk, hogyan lehet elindítani egy parancsot a háttérben, valamint hogyan lehet a folyamatot a shell munkamenet bezárása után futtatni.,
Fut egy Linux Parancs a Háttérben #
fut a parancs, a háttérben, hozzáadjuk a jel jel (&
) a végén a parancs:
command &
A shell állás AZONOSÍTÓ (körül zárójelben), illetve a folyamat AZONOSÍTÓJA lesz nyomtatva a terminál:
25177
több folyamatok a háttérben fut egyszerre.
a háttérfolyamat továbbra is üzeneteket ír a terminálra, ahonnan meghívta a parancsot., To suppress the stdout
and stderr
messages use the following syntax:
command > /dev/null 2>&1 &
>/dev/null 2>&1
means redirect stdout
to /dev/null
and stderr
to stdout
.,/div>
, Hogy egy háttérben futó folyamat, hogy az előtérben, használja a fg
parancs:
fg
Ha több háttér munkát, include %
a feladat AZONOSÍTÓ parancs után:
fg %1
felmondani a háttér folyamat, használja a kill
parancsot, majd a folyamat ID:
kill -9 25177
Mozgassa az Előtérben Folyamat Háttér, #
mozgatni egy előtérben futó folyamat a háttérben:
- Megállítani a folyamatot, ha beírja
Ctrl+Z
., - mozgassa a leállított folyamatot a háttérbe a
bg
beírásával.
A háttérfolyamatok futtatása a Shell kilépése után #
Ha a kapcsolat megszakad, vagy kilép a shell munkamenetből, a háttérfolyamatok megszűnnek. Számos módja van annak, hogy a folyamat az interaktív shell munkamenet befejezése után futjon.,
az Egyik módja annak, hogy távolítsa el a munkát a shell feladata, ellenőrzés segítségével a disown
> shell beépített:
disown
Ha több, mint egy háttérben futó, include %
a feladat AZONOSÍTÓ parancs után:
disown %1
ellenőrizze, hogy a munkát el kell távolítani a táblázat az aktív munkára használja a jobs -l
parancs. Az összes futó folyamat felsorolásához, beleértve a letiltottakat is, használja a ps aux
parancsot.,
a folyamat futtatásának másik módja a shell kilépése után anohup
használata.
a nohup
parancs végrehajtja az argumentumként megadott másik programot, és figyelmen kívül hagyja az összes SIGHUP
(hangup) jelet. SIGHUP
egy olyan jel, amelyet egy folyamathoz küldenek, amikor a vezérlő terminál bezáródik.
parancs futtatásához a háttérben a nohup
parancs segítségével írja be:
nohup command &
a parancs kimenetét átirányítja a nohup.out
fájlra.,
nohup: ignoring input and appending output to 'nohup.out'
ha kijelentkezik vagy bezárja a terminált, a folyamat nem fejeződik be.
alternatívák #
számos program lehetővé teszi, hogy egyszerre több interaktív munkamenet legyen.
képernyő #
a képernyő vagy a GNU képernyő egy terminál multiplexer program, amely lehetővé teszi, hogy elindítson egy képernyő munkamenetet, és megnyissa az adott munkameneten belül tetszőleges számú ablakot (virtuális terminált). A képernyőn futó folyamatok továbbra is futnak, amikor az ablak nem látható, még akkor sem, ha megszakad.,
Tmux #
a Tmux a GNU képernyő modern alternatívája. A Tmux segítségével létrehozhat egy munkamenetet, valamint több ablakot is megnyithat a munkameneten belül. A Tmux munkamenetek tartósak, ami azt jelenti, hogy a Tmux-ban futó programok továbbra is futnak, még akkor is, ha bezárja a terminált.
következtetés #
parancs futtatásához a háttérben a &
parancs végén.
amikor egy parancsot futtat a háttérben, nem kell várnia, amíg befejeződik, mielőtt végrehajthat egy másikat.