Ceļvedis komandām Kill, Pkill un Killall, lai izbeigtu procesu Linux
Lai pārtrauktu procesu, Linux operētājsistēmai ir komandai kill. Komanda ļauj turpināt servera palaišanu bez nepieciešamības atsāknēt pēc būtiskām izmaiņām/atjaunināšanas. Šeit parādās Linux lielais spēks, un tas ir viens no iemesliem, kāpēc Linux darbojas uz 90% serveru uz planētas.
Kill komanda nosūta signālu, norādītu signālu, lai process būtu pilnīgāks. Komandu kill var izpildīt vairākos veidos, tieši vai izmantojot čaulas skriptu.
Izmantojot komandu kill/from/usr/bin, varat iegūt papildu funkciju, lai nogalinātu procesu pēc procesa nosaukuma, izmantojot pkill.
Komandas kill sintakse ir šāda:
# kill [signal or option] PID(s)
Kill komandai signāla nosaukums varētu būt:
Signal Name Signal Value Behaviour SIGHUP 1 Hangup SIGKILL 9 Kill Signal SIGTERM 15 Terminate
Skaidrs, ka uzvedība virs SIGTERM ir noklusējuma un drošākais veids, kā nogalināt procesu. SIGHUP ir mazāk drošs veids kā nogalināt procesu kā SIGTERM. SIGKILL ir visdrošākais veids starp trim iepriekš minētajiem, lai nogalinātu procesu, kas izbeidz procesu, nesaglabājot.
Lai nogalinātu procesu, mums jāzina procesa ID. Process ir programmas eksemplārs. Katru reizi, kad programma tiek startēta, šim procesam automātiski tiek ģenerēts unikāls PID.
Katram Linux procesam ir pid. Pirmais process, kas sākas, palaižot Linux sistēmu, ir - init process, līdz ar to tam lielākajā daļā gadījumu tiek piešķirta vērtība “1”.
Init ir galvenais process, un to nevar nogalināt šādā veidā, kas nodrošina, ka galvenais process netiek nogalināts nejauši. Init nolemj un ļauj sevi nogalināt, kur nogalināšana ir tikai lūgums izslēgt.
Lai zinātu visus procesus un attiecīgi tiem piešķirto pid, palaidiet šādu komandu 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
Kā būtu ar iepriekšminētās izejas pielāgošanu, izmantojot sintaksi kā “pidof process”.
# pidof mysqld
1684
Vēl viens veids, kā sasniegt iepriekš minēto mērķi, ir sekot zemāk esošajai sintaksei.
# 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
Pirms mēs ejam uz priekšu un izpildām kill komandu, jāatzīmē daži svarīgi punkti:
- Lietotājs var nogalināt visu savu procesu.
- Lietotājs nevar nogalināt cita lietotāja procesu.
- Lietotājs nevar nogalināt sistēmas izmantotos procesus.
- Saknes lietotājs var nogalināt sistēmas līmeņa procesu un jebkura lietotāja procesu.
Vēl viens veids, kā veikt to pašu funkciju, ir izpildīt komandu ‘pgrep’.
# pgrep mysql
3139
Lai nogalinātu iepriekš minēto PID, izmantojiet komandu kill, kā parādīts.
kill -9 3139
Iepriekš minētā komanda nogalinās procesu ar pid = 3139, kur PID ir procesa skaitliskā vērtība.
Vēl vienu veidu, kā veikt to pašu funkciju, var pārrakstīt kā.
# kill -SIGTERM 3139
Līdzīgi ‘kill -9 PID’ ir līdzīgs ‘kill -SIGKILL PID’ un otrādi.
Jums ir jāzina procesa nosaukums, pirms nogalināšana un nepareiza procesa nosaukuma ievadīšana var jūs aizskart.
# pkill mysqld
Nogalini vairāk nekā vienu procesu vienlaikus.
# kill PID1 PID2 PID3 or # kill -9 PID1 PID2 PID3 or # kill -SIGKILL PID1 PID2 PID3
Ko darīt, ja procesam ir pārāk daudz gadījumu un daudz bērnu procesu, mums ir komanda ‘killall’. Šī ir vienīgā šīs saimes komanda, kas procesa numura vietā kā argumentu ņem procesa nosaukumu.
# killall [signal or option] Process Name
Lai nogalinātu visus mysql gadījumus kopā ar bērnu procesiem, izmantojiet komandu šādi.
# killall mysqld
Jūs vienmēr varat pārbaudīt procesa statusu, ja tas darbojas vai nedarbojas, izmantojot jebkuru no tālāk norādītajām komandām.
# service mysql status # pgrep mysql # ps -aux | grep mysql
Pagaidām tas ir viss, no manas puses. Drīz būšu šeit atkal ar citu interesantu un informatīvu tēmu. Līdz tam, sekojiet līdzi, sazinieties ar Tecmint un vesels. Neaizmirstiet komentāru sadaļā sniegt vērtīgas atsauksmes.