Android

A Linux parancsok futtatása a háttérben

快速稳定地准确无误地支持全球化语言的两种方法;排除YouTube自动翻译,谷歌翻译“不人性化”的错误;支持Windows,Mac,Linux #自动化批量翻译AutoSub2

快速稳定地准确无误地支持全球化语言的两种方法;排除YouTube自动翻译,谷歌翻译“不人性化”的错误;支持Windows,Mac,Linux #自动化批量翻译AutoSub2

Tartalomjegyzék:

Anonim

Általában, amikor egy parancsot futtat a terminálon, meg kell várnia, amíg a parancs befejeződik, mielőtt újat adhat meg. Ezt nevezik a parancs futtatásának az előtérben vagy az előtérben. Amikor egy folyamat az előtérben fut, akkor elfoglalja a héját, és a bemeneti eszközök segítségével kölcsönhatásba léphet vele.

Mi lenne, ha a parancs elkészítése sokáig tart, és időközben más parancsokat is futtatni akar? Több lehetősége van a rendelkezésére. A legnyilvánvalóbb és legegyszerűbb lehetőség egy új shell munkamenet indítása, és a parancs futtatása benne. Egy másik lehetőség a parancs futtatása a háttérben.

A háttérfolyamat egy folyamat / parancs, amelyet egy terminálról indítanak és a háttérben futnak, a felhasználó interakciója nélkül., arról beszélünk, hogy a háttérfolyamatok Linuxok. Megmutatjuk, hogyan indítsunk el egy parancsot a háttérben, és hogyan kell a folyamatot futtatni a shell munkamenet bezárása után.

Futtasson egy Linux parancsot a háttérben

A parancs futtatásához a háttérben adja hozzá az ampersand szimbólumot ( & ) a parancs végére:

command &

A héj job azonosítója (zárójelekkel körülvéve) és a folyamat azonosítója kinyomtatódik a terminálon:

25177

Egyidejűleg több folyamat futhat a háttérben.

A háttérfolyamat továbbra is üzeneteket ír annak a terminálnak, ahonnan a parancsot meghívta. A stdout és stderr üzenetek elnyomására használja a következő szintaxist:

command > /dev/null 2>&1 &

>/dev/null 2>&1 azt jelenti, hogy átirányítja a stdout a /dev/null és az stderr a stdout .

A jobs segédprogram segítségével jelenítheti meg a jelenlegi shell munkamenet összes leállított és háttér feladatának állapotát:

jobs -l

A kimenet tartalmazza a feladat számát, a folyamat azonosítóját, a feladat állapotát és a feladatot elindító parancsot:

+ 25177 Running ping google.com &

A háttér folyamat előtérbe helyezéséhez használja az fg parancsot:

fg

fg %1

A háttérfolyamat leállításához használja a kill parancsot, amelyet a folyamat azonosítója követ:

kill -9 25177

Az előtérbeli folyamat áthelyezése a háttérbe

A futó előtérbeli folyamat mozgatása a háttérben:

  1. A Ctrl+Z gépeléssel állítsa le a folyamatot. A bg gépelésével helyezze a leállított folyamatot a háttérre.

Tartsd folyamatban a háttérfolyamatokat, amikor a héj kilép

Ha a kapcsolat megszakad, vagy kijelentkezik a shell munkamenetből, a háttérfolyamatok megszakadnak. Számos módja van a folyamat futtatásának az interaktív héja munkamenet befejezése után.

Az egyik módszer a feladat eltávolítása a parancsértelmező feladat-vezérléséből a disown parancskészlet segítségével:

disown

disown %1

A job- jobs -l paranccsal ellenőrizze, hogy a job eltávolításra került-e az aktív jobok táblájából. Az összes futó folyamat felsorolásához, beleértve a letiltottakat, használja a ps aux parancsot.

A héj kilépése után a folyamat futásának másik módja a nohup használata.

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.

A nohup paranccsal a háttérben a parancs futtatásához írja be:

nohup command &

A parancs kimenete a nohup.out fájlba kerül.

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

alternatívák

Számos program lehetővé teszi több interaktív munkamenet egyszerre tartását.

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.

Következtetés

A parancs futtatásához a háttérben tartalmazza a & végét.

Ha egy parancsot a háttérben futtat, nem kell megvárnia, amíg befejeződik, mielőtt újabb parancsot végrehajthat.

nohup fg bg job disown terminal