Miten Ajaa ja Hallita Tausta Prosesseja Linux

  • Dave McKay

    @TheGurkha

  • 24. syyskuuta 2019, 8:00 EDT
Fatmawati Achmad Zaenuri/.com

Käyttää Bash-komentotulkki on Linux hallita etualalla ja tausta prosesseja. Voit käyttää Bashin työnohjaustoimintoja ja signaaleja antamaan sinulle enemmän joustavuutta komentojen käytössä. Näytämme miten.

kaikki prosesseista

aina kun ohjelma suoritetaan Linuxissa tai Unixin kaltaisessa käyttöjärjestelmässä, prosessi käynnistyy., ”Process” on nimi suoritusohjelman sisäiselle edustukselle tietokoneen muistissa. Jokaiselle aktiiviselle ohjelmalle on oma prosessinsa. Itse asiassa, on prosessi lähes kaiken, joka on käynnissä tietokoneella. Se sisältää komponentteja graafisen työpöydän environment (GDE), kuten GNOME tai KDE, ja järjestelmä demonit, jotka käynnistetään käynnistyksen.

miksi lähes kaikki, mikä on käynnissä? No, Bash sisäänrakennettu kuten cd, pwd, ja alias ei tarvitse käynnistää prosessia (tai ”kutu”), kun ne ajetaan., Bash suorittaa nämä komennot päätteikkunassasi olevan Bash-kuoren sisällä. Nämä komennot ovat nopeita juuri siksi, että niillä ei tarvitse olla käynnistettyä prosessia niiden suorittamiseen. (Voit kirjoittaa help pääteikkunaan nähdäksesi luettelon bash-rakennuksista.)

Mainos

Prosesseja voi olla käynnissä etualalla, jolloin he ottavat yli oman terminaalin, kunnes ne on saatettu päätökseen, tai ne voidaan ajaa taustalla., Taustalla kulkevat prosessit eivät dominoi pääteikkunaa ja siinä voi jatkaa työskentelyä. Tai ainakaan ne eivät dominoi pääteikkunaa, jos ne eivät luo näytön ulostuloa.

a Messy Example

We ’ ll start a simple ping trace running. We ’re going to ping The How-To Geek domain. Tämä suoritetaan etualaprosessina.

ping www.howtogeek.com

saamme odotetut tulokset, vierittämällä pääteikkunaa. Pääteikkunassa ei voi tehdä mitään muuta, kun ping on käynnissä., Komentohitin Ctrl+Cpäättäminen.

Ctrl+C

näkyvä vaikutus Ctrl+C on korostettu kuvakaappaus. ping antaa lyhyen yhteenvedon ja sitten pysähtyy.

Mainos

toistetaan se. Mutta tällä kertaa iskemme Ctrl+Z sijaan Ctrl+C. Tehtävää ei lopeteta. Siitä tulee taustatehtävä. Saamme terminaalin ikkunan haltuumme.,

ping www.howtogeek.com
Ctrl+Z

näkyvän vaikutuksen osuminenCtrl+Z korostuu kuvakaappauksessa.

tällä kertaa kerrotaan, että prosessi on pysähtynyt. Pysähtyminen ei tarkoita irtisanomista. Se on kuin auto stop-merkillä. Emme ole romuttaneet sitä ja heittäneet pois. Se on yhä tiellä, paikallaan, odottamassa lähtöä. Prosessi on nyt taustatyötä.

jobs komento listaa työt, jotka on aloitettu vuonna nykyinen terminaali-istunnon., Ja koska työpaikat ovat (vääjäämättä) prosesseja, voimme myös käyttää ps – komentoa niiden näkemiseen. Käytetään molempia komentoja ja verrataan niiden lähtöjä. Käytämme T – vaihtoehtoa (terminaali) vain luetteloidaksemme tässä pääteikkunassa käynnissä olevat prosessit. Huomaa, että ei ole tarvetta käyttää väliviivaa -, jossa T vaihtoehto.

jobs
ps T

jobs komento kertoo meille:

  • : numero hakasulkeissa on työn määrä., Voimme käyttää tätä viittaamaan työhön, kun meidän täytyy hallita sitä työnohjauskomennoilla.
  • +: plus-merkki + osoittaa, että tämä on se työ, johon ryhdytään, jos käytämme työnohjauskomennusta ilman tiettyä työnumeroa. Sitä kutsutaan oletustyöksi. Oletustyö on aina se, joka on viimeksi lisätty työpaikkalistalle.
  • lopetti: prosessi ei ole käynnissä.
  • ping www.howtogeek.com: prosessin käynnistänyt komentorivi.,

ps komento kertoo:

  • PID: prosessin prosessitunnus. Jokaisessa prosessissa on yksilöllinen tunniste.
  • TTY: pseudo-teletyyppi (pääteikkuna), josta prosessi toteutettiin.
  • STAT: the status of the process.
  • aika: prosessin kuluttaman SUORITINAJAN määrä.
  • komento: komento, joka käynnisti prosessin.

nämä ovat STAT-palstan yhteiset arvot:

  • d: univaikeudet. Prosessi on odotustilassa, yleensä odottamassa syöttöä tai ulostuloa, eikä sitä voida keskeyttää.,
  • I: Idle.
  • R: Running.
  • S: Keskeytyvä Uni.
  • T: pysähtyi työnohjaussignaaliin.
  • Z: A zombie process. Prosessi on lopetettu, mutta sen vanhempainprosessi ei ole ”siivonnut”.
Mainos

STAT-sarakkeen arvoa voi seurata jokin näistä lisäindikaattoreista:

    • <: korkean prioriteetin tehtävä (ei mukava muille prosesseille).
    • N: Low-priority (nice to other processes).
    • L: prosessissa on sivuja, jotka on lukittu muistiin (tyypillisesti reaaliaikaisten prosessien avulla).,
    • s: sessiojohtaja. Session leader on prosessi, joka on käynnistänyt prosessiryhmiä. Kuori on istuntojohtaja.
    • l: multi-thread process.
    • +: etualaprosessi.

    – Voimme nähdä, että Bash on tilassa Ss. Kohokoukku ” S ” kertoo, että Bashin kuori nukkuu, ja se on keskeytettävissä. Heti kun tarvitsemme sitä, se vastaa. Lowercase ” s ” kertoo, että kuori on istuntojohtaja.

    ping-komennon tila on T., Tämä kertoo, että ping on pysäytetty työnohjaussignaalilla. Tässä esimerkissä Ctrl+Z laitoimme sen taustalle.

    ps T komento on tilassa R, joka on käynnissä. + osoittaa, että tämä prosessi on jäsenenä etualalla ryhmä. Etualalla kulkee siis ps T – komento.

    bg-Komennon

    bg komennolla jatkaa taustalla prosessi., Sitä voidaan käyttää työnumeron kanssa tai ilman. Jos käytät sitä ilman työnumeroa, oletustyö tuodaan etualalle. Prosessi kulkee edelleen taustalla. Et voi lähettää siihen mitään tietoa.

    Mainos

    Jos annamme bg komento, jatkamme ping komento:

bg

ping ping komento jatkuu ja näemme vierityksen ulostulon pääteikkunassa vielä kerran. Sinulle näytetään uudelleen käynnistetyn komennon nimi., Tämä korostuu kuvakaappauksessa.

mutta meillä on ongelma. Tehtävä kulkee taustalla eikä hyväksy syöttöä. Miten pysäytämme sen? Ctrl+C ei tee mitään. Voimme nähdä sen, kun kirjoitamme sen, mutta taustatehtävä ei saa niitä näppäilyjä, joten se pitää hilpeästi poissa.

Mainos

itse asiassa olemme nyt oudossa sekoitustilassa. Voimme kirjoittaa pääteikkunaan, mutta sen, mitä kirjoitamme, pyyhkii nopeasti pois ping – komennon vierityslähtö. Kaikki, mitä kirjoitamme, tulee voimaan.,

lopettaaksemme taustatehtävämme meidän on tuotava se etualalle ja pysäytettävä se.

fg-komento

fg – komento tuo taustatehtävän etualalle. Kuten bg – komennossa, sitä voidaan käyttää työnumeron kanssa tai ilman. Sen käyttäminen työnumerolla tarkoittaa, että se toimii tietyssä työssä. Jos sitä käytetään ilman työnumeroa, käytetään viimeistä komentoa, joka lähetettiin taustalle.

jos kirjoitamme fg meidän ping komento tuodaan etualalle., Kirjoittamamme merkit sekoitetaan ping – komennon ulostuloon, mutta komentotulkki operoi niitä ikään kuin ne olisi syötetty komentoriville tavalliseen tapaan. Ja itse asiassa Bash Shellin näkökulmasta juuri näin on tapahtunut.

fg
Mainos

Ja nyt kun meillä on ping komento käynnissä etualalla vielä kerran, voimme käyttää Ctrl+C sen tappamiseen.

Ctrl+C

Meidän Täytyy Lähettää oikeita Signaaleja

Se ei ollut kovin kaunis., Ilmeisesti käynnissä prosessi taustalla toimii parhaiten, kun prosessi ei tuota tuotosta eikä vaadi panosta.

mutta, sotkuinen tai ei, esimerkkimme sai aikaan:

  • prosessin taustalle.
  • prosessin palauttaminen juoksevaan tilaan taustalla.
  • prosessin palauttaminen etualalle.
  • lopettaa prosessin.

Kun käytät Ctrl+C ja Ctrl+Z , olet lähettää signaaleja prosessi. Nämä ovat pikakirjoitustapoja kill – komennon käyttämiseksi., On 64 erilaista signaalia, joita kill voi lähettää. Käytäkill -l komentorivillä luetteloidaksesi ne. kill ei ole ainoa näiden signaalien lähde. Jotkut niistä nostetaan automaattisesti muiden prosessien järjestelmän

tässä on joitakin yleisesti käytettyjä.

  • SIGHUP: signaali 1. Automaattisesti lähetetään prosessiin, kun terminaali, jossa se on käynnissä, on suljettu.
  • SIGINT: Signal 2. Lähetetään prosessiin, johon osut Ctrl+C. Prosessi keskeytyy ja sitä käsketään lopettamaan.,
  • SIGQUIT: Signal 3. Lähetetään prosessiin, Jos käyttäjä lähettää lopetussignaalin Ctrl+D.
  • SIGKILL: Signal 9. Prosessi tapetaan välittömästi, eikä sitä yritetä sulkea puhtaasti. Prosessi ei suju sulavasti.
  • SIGTERM: signaali 15. Tämä on oletussignaali, jonka lähettää kill. Se on normaali ohjelman päättymissignaali.
  • SIGTSTP: Signal 20. Lähetetään prosessiin, kun käytät Ctrl+Z. Se pysäyttää prosessin ja laittaa sen taka-alalle.,

meidän on käytettävä kill – käskyä antaaksemme signaaleja, joilla ei ole niille osoitettuja näppäinyhdistelmiä.

lisää työnohjausta

taustalla siirretty prosessi Ctrl+Z sijoitetaan pysäytettyyn tilaan. Meidän on käytettävä bg – komentoa käynnistääksemme sen uudelleen. Ohjelman käynnistäminen käynnissä olevana taustaprosessina on yksinkertaista. Append an ampersand & komentorivin loppuun.,

Mainos

vaikka on parasta, että taustaprosessit eivät kirjoita pääteikkunaan, aiomme käyttää esimerkkejä, jotka tekevät. Kuvakaappauksissa pitää olla jotain, mihin voimme viitata. Tämä komento käynnistää päättymättömän silmukan taustaprosessina:

vaikka totta; do echo ”How-To Geek Loop Process”; sleep 3; done &

meille kerrotaan prosessin työnumero ja prosessitunnus. Työnumeromme on 1 ja prosessitunnus on 1979. Voimme käyttää näitä tunnisteita prosessin ohjaamiseen.,

Mainos

loputtoman silmukan ulostulo alkaa näkyä pääteikkunassa. Kuten aiemminkin, Voimme käyttää komentoriviä, mutta kaikki antamamme komennot ovat päällekkäisiä silmukan prosessin ulostulon kanssa.

onko

lopeta prosessi voimme käyttää jobs muistuttaa itseämme, mikä työn numero on, ja sitten käyttää kill.

jobs kertoo prosessimme olevan työnumero 1. Käyttääksemme tätä lukua kill meidän täytyy edeltää sitä prosenttimerkillä %.,

jobs
kill %1

kill lähettää SIGTERM signaalin, signaalin numero 15, prosessiin ja se lopetetaan. Kun Enter-näppäintä painetaan seuraavaksi, näytetään työn tila. Se listaa prosessin ” päättyneeksi.”Jos prosessi ei vastaa kill komento voit ottaa sitä lovi. Käytä kill , signaalin numero 9. Laita vain numero 9 väliin kill komento työnumero.,

kill 9 %1

Asioita Olemme Kattaa

  • Ctrl+C: Lähettää SIGINT, merkki 2, prosessi—, jos se on hyväksyä tulo—ja kertoo, että se lopettaa.
  • Ctrl+D: Sends SISQUIT, signal 3, to the process—if it is accepting input—and tell it to quit.
  • Ctrl+Z: lähettää SIGSTP, signaali 20, prosessiin ja käskee sen pysähtyä (keskeyttää) ja tulla taustaprosessiksi.
  • jobs: listaa taustatyöt ja näyttää niiden työnumeron.
  • bg job_number: käynnistää taustaprosessin uudelleen., Jos et anna työnumeroa, käytetään viimeistä prosessia, joka muutettiin taustatehtäväksi.
  • FG job_number: tuo taustaprosessin etualalle ja käynnistää sen uudelleen. Jos et anna työnumeroa, käytetään viimeistä prosessia, joka muutettiin taustatehtäväksi.
  • commandline &: lisäämällä ampersand & komentorivin loppuun suorittaa kyseisen komennon taustatehtäväksi, joka on käynnissä.
  • tappaa %job_number: Lähettää SIGTERM, signaali 15, prosessi lopettaa se.,
  • tappaa 9 %job_number: Lähettää SIGKILL, signaali 9, prosessi ja se päättyy äkillisesti.

aiheeseen LIITTYVÄT: Miten Tappaa Prosesseja Linux Terminal

Dave McKay
Dave McKay ensin käyttää tietokoneita, kun rei ’ itetty paperi nauha oli muodissa, ja hän on ollut ohjelmointi lähtien. Oltuaan yli 30 vuotta IT-alalla hän on nyt päätoiminen teknologiatoimittaja., Uransa aikana hän on työskennellyt freelance-ohjelmoija, johtaja kansainvälinen ohjelmisto development team, IT-palvelujen projektipäällikkö, ja, viime aikoina, kuten tietosuojavastaavan. Dave on Linux-evankelista ja avoimen lähdekoodin puolestapuhuja.Lue Koko Bio ”

Leave a Comment