Kuinka Ctrl + Z toimii komentorivillä, ei näppäimistöllä? [suljettu]
On helmikuu 10, 2021 by adminkommentit
- Pyysit tätä aiemmin osoitteessa unix.stackexchange.com/questions/386200 , ja tällä kopiolla et ole oikeastaan tehnyt selväksi asioita, jotka ihmiset ovat pyytäneet selväksi.
- Ei todellinen kopio. Tämä kysymys koskee Ctrl-Z: tä, toinen Ctrl-S: ää, mutta vastaus on oikeastaan sama.
- Ei, toinen ei ole Ctrl + S: stä. Ainakin niin paljon sanotaan kysymyksessä.
Vastaa
Control + Z kirjoittaa ohjausmerkin susp
, joka lähettää signaalin SIGTSTP
(numero 20 Linuxissa amd64, 24 päällä Solaris amd64, 18 FreeBSD amd64: llä … on parempi välttää viittaamasta numeroihin, koska niitä ei ole kannettavissa) kaikkiin päätelaitteen etualalla olevan prosessiryhmän prosesseihin.
Voit lähetä signaali prosessin pysäyttämiseksi komentoriviltä kill
-komennolla.
kill -s STOP <pid>
(missä <pid>
on keskeytettävän prosessin tunnus) tai, jos haluat käsitellä kaikkia ohjelman prosesseja tietyllä nimellä (teknisesti kaikki prosessit, joiden nimi vastaa tiettyä laajennusta säännöllinen lauseke):
pkill -STOP xterm
(jossa xterm
on esimerkkinimi).
Kun haluat jatkaa prosesseja, lähetä merkki al SIGCONT
samalla tavalla.
Kommentit
- Se lähettää SIGTSTP: n (20 Linuxissa) ainakin amd64) signaali, ei SIGSTOP, ja päätelaitteen etualan prosessin ryhmälle . SIGTSTP voidaan hoitaa, ei SIGSTOP.
- mutta kuinka tietää päätelaitteen käynnissä olevan istunnon määrä
- Mitä
pid
? - @abuali " PID " on lyhenne sanoista " prosessin tunnus ". Katso fi.wikipedia.org/wiki/Process_identifier
- @ St é Phane Chazelas miten konw
process ID
erityinen avatussa päätelaitteessa
vastaus
Jos haluat pysäyttää kaikki prosessit, joiden ohjauspäätteeksi on /dev/pts/12
(mukaan lukien kaikki kyseisessä terminaalissa ja kuoressa käynnissä olevat etualan ja taustatyöt), voit tehdä seuraavasti:
pkill -STOP -t pts/12
Se myös keskeyttäisi istunnonjohtajan. Joissakin tapauksissa sitä voidaan jatkaa automaattisesti. Esimerkiksi GNU screen
jatkaa istunnonjohtajaa heti, kun se havaitsee, että se on keskeytetty.
Jos haluat lähettää SIGTSTP-signaalin etualan prosessiin kyseisen päätelaitteen ryhmä, kuten ^Z
tekisitkö:
kill -s TSTP -- "-$pgid"
Missä $pgid
on kyseisen etualan prosessiryhmän prosessiryhmän tunnus. Luettelossa olevilla Linux- ja BSD-tiedostoilla voit selvittää, mikä se on, suorittamalla ps -o tpgid= -p "$pid"
missä $pid
on minkä tahansa prosessin tunnus, jolla kyseinen pääte on ohjaava päätelaite. Useimmissa järjestelmissä mikä tahansa näistä prosesseista voisi myös löytää sen käyttämällä tcgetpgrp()
.
Molemmissa tapauksissa jatkat prosesseja lähettämällä SIGCONT-signaalin SIGSTOP / SIGTSTP-tilan sijaan.
Vastaa
Lähetä STOP
-signaali prosesseille, jotka haluat keskeyttää.
Voit myöhemmin lähettää -signaali keskeytetyn prosessin keskeyttämisen peruuttamiseksi.
Esimerkiksi:
pkill -STOP terminal
Tämä keskeyttäisi kaikki terminal
prosessit.
pkill -CONT terminal
Tämä keskeyttäisi kaikki prosessit, joiden nimi on terminal
.
Kommentit
- mutta miten tietää päätelaitteen käynnissä olevan istunnon määrä
- @abuali I ' en ole varma mitä tarkoitat.
pkill
etsii kaikki toimittamaasi nimeä vastaavat prosessit ja lähettää signaalin kaikille niille. Jos haluat rajoittaa tietyn käyttäjän, lisää-u username
.
Vastaa