Ha egy folyamat rosszul viselkedik, előfordulhat, hogy meg akarja szüntetni vagy meg akarja ölni. Ebben a bejegyzésben megvizsgálunk néhány módszert egy folyamat vagy egy alkalmazás befejezésére a parancssorból és egy grafikus felületről egyaránt, a gedit-et használva mintaalkalmazásként.
A parancssor/befejező karakterek használata
Ctrl + C
Az egyik probléma a gedit
parancssorból történő meghívásával (ha nem használjuk a gedit &
-t) az, hogy nem szabadítja fel a parancssort, így a shell munkamenet blokkolva van. Ilyen esetekben jól jön a Ctrl+C (a Control billentyű a ‘C’-vel kombinálva). Ez megszakítja a gedit
-t, és minden munka elveszik (kivéve, ha a fájl mentése megtörtént). A Ctrl+C a SIGINT
jelet küldi a gedit
-nek. Ez egy leállítási jel, amelynek alapértelmezett hatása a folyamat befejezése. Arra utasítja a héjat, hogy állítsa le a gedit
-t és térjen vissza a fő hurokba, és visszakapod a promptot.
$ gedit
^C
Ctrl + Z
Ezt hívják felfüggesztő karakternek. Ez egy SIGTSTP
jelet küld a processznek. Ez egyúttal leállítási jel is, de az alapértelmezett művelet nem a folyamat megölése, hanem felfüggesztése.
Ez leállítja (megöli/megszünteti) gedit
és visszaadja a shell promptot.
$ gedit
^Z
+ Stopped gedit
$
Amikor a folyamatot felfüggesztették (ebben az esetben gedit
), a gedit
-ben nem lehet semmit írni vagy csinálni. A háttérben a folyamat munkává válik. Ezt a jobs
paranccsal ellenőrizhetjük.
$ jobs
+ Stopped gedit
jobs
lehetővé teszi több folyamat vezérlését egyetlen shell munkameneten belül. A munkákat szükség szerint leállíthatjuk, folytathatjuk és áthelyezhetjük a háttérbe vagy az előtérbe.
Folytassuk a gedit
folyamatot a háttérben, és szabadítsunk fel egy promptot más parancsok futtatására. Ezt a bg
paranccsal teheti meg, amelyet a munka azonosítója követ (vegye észre a fenti jobs
kimenetén a -t.
a munka azonosítója).
$ bg 1
+ gedit &
Ez hasonló a gedit
&,
indításához:
$ gedit &
A kill
kill
használata lehetővé teszi a jelek finom vezérlését, lehetővé teszi egy folyamat jelzését egy jelnév vagy egy jelszám megadásával, amelyet egy folyamatazonosító vagy PID követ.
A kill
-ban azt szeretem, hogy a munkaazonosítókkal is tud dolgozni. Indítsuk el a gedit
-t a háttérben a gedit &
segítségével. Feltételezve, hogy a jobs
parancsból gedit
munkaazonosítót kaptam, küldjük el a SIGINT
-et a gedit
-nek:
$ kill -s SIGINT %1
Megjegyezzük, hogy a munkaazonosító elé %
-at kell tenni, különben a kill
PID-nek fogja tekinteni.
kill
működhet a jel explicit megadása nélkül is. Ebben az esetben az alapértelmezett művelet a SIGTERM
küldése, amely a folyamatot befejezi. A kill -l
végrehajtásával listázza ki az összes szignál nevét, és a man kill
paranccsal olvassa el a man oldalt.
A killall
használataHa nem akarunk munkaazonosítót vagy PID-et megadni, a killall
segítségével a folyamatot név szerint adhatjuk meg. A gedit
megszüntetésének legegyszerűbb módja a killall
használatával a következő:
$ killall gedit
Ez az összes gedit
nevű folyamatot megöli. A kill
-hoz hasonlóan az alapértelmezett jel a SIGTERM
. Lehetősége van az esetek figyelmen kívül hagyására a -I
használatával:
$ gedit &
14852
$ killall -I GEDIT
+ Terminated gedit
Az killall
által biztosított különböző zászlókról (mint például a -u
, amely lehetővé teszi a felhasználó tulajdonában lévő folyamatok megölését) többet megtudhat a man oldalon (man killall
)
Az xkill
Hozott már létre olyan problémát, amikor egy médialejátszó, például a VLC, szürkére vált vagy leállt? Most megkeresheti a PID-t és megölheti az alkalmazást a fent felsorolt parancsok valamelyikével vagy a xkill
használatával.
xkill
lehetővé teszi az ablak megölését az egérrel. Egyszerűen hajtsa végre a xkill
parancsot egy terminálban, aminek az egérkurzort egy x-re vagy egy apró koponya ikonra kell változtatnia. Kattintson az x-re a bezárni kívánt ablakon. Légy óvatos a xkill
használatával – mivel a man oldala elmagyarázza, hogy veszélyes lehet. Figyelmeztettünk!
További információkért olvassa el az egyes parancsok man oldalát. Olyan parancsokat is felfedezhet, mint a pkill
és a pgrep
.