Juhend Kill, Pkill ja Killall käskude jaoks protsessi lõpetamiseks Linuxis
Linuxi operatsioonisüsteemil on protsessi lõpetamiseks käsk kill. Käsk võimaldab serveri käitamist jätkata ilma suurema muutuse/värskenduse taaskäivitamiseta. Siit tuleb Linuxi suur jõud ja see on üks põhjustest, miks Linux töötab planeedil 90% serveritest.
Tapa käsk saadab signaali, täpsustatud signaali, et protsess oleks täiuslikum. Kill-käsku saab käivitada mitmel viisil, otse või shelliskripti abil.
Käsu kill/käsk/usr/bin kasutamine annab teile lisafunktsiooni protsessi tapmiseks protsessi nime järgi pkilli abil.
Tapa käsu tavaline süntaks on:
# kill [signal or option] PID(s)
Tapmise käsu korral võib signaali nimi olla:
Signal Name Signal Value Behaviour SIGHUP 1 Hangup SIGKILL 9 Kill Signal SIGTERM 15 Terminate
SIGTERM-i kohal olevast käitumisest nähtub, et see on vaikimisi ja ohutum viis protsessi tapmiseks. SIGHUP on vähem turvaline viis protsessi tapmiseks kui SIGTERM. SIGKILL on ülaltoodud kolme hulgas kõige ebaturvalisem viis tappa protsess, mis lõpetab protsessi ilma salvestamata.
Protsessi tapmiseks peame teadma protsessi protsessi ID-d. Protsess on programmi eksemplar. Iga kord, kui programm käivitatakse, luuakse selle protsessi jaoks automaatselt kordumatu PID.
Igal Linuxi protsessil on pid. Esimene protsess, mis algab Linuxi süsteemi käivitamisel, on init-protsess, seega omistatakse sellele enamikul juhtudel väärtus ‘1’.
Init on põhiprotsess ja seda ei saa sel viisil tappa, mis tagab, et põhiprotsessi ei tapeta kogemata. Init otsustab ja laseb end tappa, kus tapmine on lihtsalt sulgemise taotlus.
Kõigi protsesside ja vastavalt neile määratud pidamise teadmiseks käivitage järgmine käsk ps.
# ps -A
PID TTY TIME CMD 1 ? 00:00:01 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 migration/0 6 ? 00:00:00 watchdog/0 7 ? 00:00:01 events/0 8 ? 00:00:00 cgroup 9 ? 00:00:00 khelper 10 ? 00:00:00 netns 11 ? 00:00:00 async/mgr 12 ? 00:00:00 pm 13 ? 00:00:00 sync_supers 14 ? 00:00:00 bdi-default 15 ? 00:00:00 kintegrityd/0 16 ? 00:00:00 kblockd/0 17 ? 00:00:00 kacpid 18 ? 00:00:00 kacpi_notify 19 ? 00:00:00 kacpi_hotplug 20 ? 00:00:00 ata/0 21 ? 00:00:00 ata_aux 22 ? 00:00:00 ksuspend_usbd
Kuidas oleks ülaltoodud väljundi kohandamisega, kasutades süntaksit pidof-protsessina.
# pidof mysqld
1684
Teine võimalus ülaltoodud eesmärgi saavutamiseks on järgida alltoodud süntaksit.
# ps aux | grep mysqld
root 1582 0.0 0.0 5116 1408 ? S 09:49 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 1684 0.1 0.5 136884 21844 ? Sl 09:49 1:09 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock root 20844 0.0 0.0 4356 740 pts/0 S+ 21:39 0:00 grep mysqld
Enne kui astume ette ja tapmiskäsku täidame, tuleb märkida mõned olulised punktid:
- Kasutaja võib tappa kogu oma protsessi.
- Kasutaja ei saa teise kasutaja protsessi tappa.
- Kasutaja ei saa tappa protsesse, mida süsteem kasutab.
- Juurkasutaja võib tappa süsteemitaseme protsessi ja kõigi kasutajate protsessid.
Teine viis sama funktsiooni täitmiseks on käsu ‘pgrep’ täitmine.
# pgrep mysql
3139
Eespool nimetatud PID-i tapmiseks kasutage käsku kill nagu näidatud.
kill -9 3139
Ülaltoodud käsk tapab protsessi, mille pid = 3139, kus PID on protsessi arvuline väärtus.
Teine võimalus sama funktsiooni täitmiseks saab ümber kirjutada kui.
# kill -SIGTERM 3139
Samamoodi sarnaneb ‘kill -9 PID’ ‘kill -SIGKILL PID’ -ga ja vastupidi.
Enne protsessi nime valetamist ja valet sisestamist peate protsessi nimest teadlik olema.
# pkill mysqld
Tapa mitu protsessi korraga.
# kill PID1 PID2 PID3 or # kill -9 PID1 PID2 PID3 or # kill -SIGKILL PID1 PID2 PID3
Mis siis, kui protsessil on liiga palju eksemplare ja palju alamprotsesse, on meil käsk ‘killall’. See on selle perekonna ainus käsk, mis võtab protsessi numbri asemel argumendina protsessi nime.
# killall [signal or option] Process Name
Kõigi mysql-i eksemplaride ja alamprotsesside tapmiseks kasutage käsku järgmiselt.
# killall mysqld
Protsessi oleku saate alati kontrollida, kui see töötab või mitte, kasutades mõnda järgmistest käskudest.
# service mysql status # pgrep mysql # ps -aux | grep mysql
See on minu pooleks praegu kõik. Varsti olen jälle siin ühe teise huvitava ja informatiivse teemaga. Kuni selle ajani olge kursis, Tecmintiga ühendatud ja terve. Ärge unustage kommentaaride jaotises oma väärtuslikku tagasisidet anda.