Hogyan működik a Ctrl + Z parancssor, nem pedig billentyűzet segítségével? [zárt]
On február 10, 2021 by adminMegjegyzések
- Ezt korábban a unix.stackexchange.com/questions/386200 címen kérdezte meg, és ezzel a másolattal valójában nem tisztázta azokat a dolgokat, amelyek tisztázására kérték az embereket.
- Nem igazi másolat. Ez a kérdés a Ctrl-Z-ről szól, a másik a Ctrl-S-ről, de a válasz valójában ugyanaz.
- Nem, a másik nem a Ctrl + S-ről. Legalább ennyi szerepel a kérdésben.
Válasz
Vezérlés + Z írja a susp
vezérlő karaktert, amely a SIGTSTP
jelet küldi (20. szám Linux amd64-en, 24 be Solaris amd64, 18 a FreeBSD amd64-en … jobb, ha kerüljük a számok szerinti jelekre való hivatkozást, mivel ezek nem hordozhatók, a terminál előterében lévő összes folyamatra.
Lehet küldjön jelet a folyamat leállításához a parancssorból a kill
-parancs használatával.
kill -s STOP <pid>
(ahol A <pid>
a felfüggeszteni kívánt folyamat azonosítója), vagy ha egy program összes folyamatát meg akarja címezni egy bizonyos névvel (technikailag minden olyan folyamat, amelynek neve egy adott kiterjesztett fájlhoz illeszkedik) szabályos kifejezés):
pkill -STOP xterm
(ahol xterm
egy példa név).
Ha folytatnia kell a folyamatokat, küldjön jelet al SIGCONT
ugyanúgy.
Megjegyzések
- Küldi a SIGTSTP-t (20 Linux alatt legalább amd64) jelet, nem pedig a SIGSTOP-ot, és a végberendezés előtérben lévő folyamatának csoportjához . A SIGTSTP kezelhető, nem a SIGSTOP.
- hanem a terminál által futtatott munkamenetek számának megismerése
- Mit jelent a
pid
? - @abuali " A PID " rövidítés " folyamatazonosító ". Lásd: hu.wikipedia.org/wiki/Process_identifier
- @ St é Phane Chazelas hogyan konw
process ID
special a megnyitott terminálon
Válasz
Ha le szeretné állítani az összes olyan folyamatot, amelynek /dev/pts/12
a vezérlő terminálja (beleértve a terminálban és a shellben futó összes előtérbeli és háttérmunkát), megteheti:
pkill -STOP -t pts/12
Ez felfüggesztené a munkamenet vezetőjét is. Bizonyos esetekben ez automatikusan folytatódik. Például a GNU screen
folytatja a munkamenet-vezetőt, amint észleli, hogy felfüggesztették.
Ha a SIGTSTP jelet szeretné küldeni az előtér folyamatának a terminál olyan csoportja, mint ^Z
tenné:
kill -s TSTP -- "-$pgid"
Hol $pgid
az előtérbeli folyamatcsoport folyamatcsoport-azonosítója. A listán szereplő Linux- és BSD-fájlokon a ps -o tpgid= -p "$pid"
futtatásával megtudhatja, hogy melyik az a $pid
minden olyan folyamat azonosítója, amelynek az adott terminál a vezérlő terminálja. A legtöbb rendszerben bármelyik folyamat megtudhatja azt is a tcgetpgrp()
használatával.
Mindkét esetben folytatja ezeket a folyamatokat a SIGCONT jel elküldésével a SIGSTOP / SIGTSTP helyett.
Válasz
Küldje el a STOP
jelet a felfüggeszteni kívánt folyamat (ok) nak.
Később elküldheti a jelzés a felfüggesztett folyamat felfüggesztésének visszavonására.
Például:
pkill -STOP terminal
Ez felfüggesztené az összes terminal
folyamatok.
pkill -CONT terminal
Ez felfüggesztené az összes terminal
nevű folyamatot.
Megjegyzések
- de hogyan lehet tudni a terminál által futtatott munkamenetek számát
- @abuali I ' nem vagyok biztos benne, mire gondolsz. A
pkill
megkeresi az összes folyamatot, amely megfelel a megadott névnek, és jelet küld ezeknek. Ha egy adott felhasználóra szeretne korlátozni, adja hozzá a következőt:-u username
.
Vélemény, hozzászólás?