Amministratore Linux: gestione dei processi
Di seguito sono riportati i comandi comuni utilizzati con Process Management: bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.
Lavora con i processi
Quick Note: Process PID in Linux
In Linux a ogni processo in esecuzione viene assegnato un numero PID o ID processo. Questo PID è il modo in cui CentOS identifica un particolare processo. Come abbiamo discusso, systemd è il primo processo avviato e dato un PID di 1 in CentOS.
Pgrep viene utilizzato per ottenere il PID Linux per un dato nome di processo.
[[email protected]]# pgrep systemd
1
[[email protected]]#
Come visto, il comando pgrep restituisce il PID corrente di systemd.
Processo CentOS di base e gestione dei lavori in CentOS
Quando si lavora con i processi in Linux è importante sapere come vengono eseguiti i processi di base in primo piano e in background dalla riga di comando.
fg - Porta il processo in primo piano
bg - Sposta il processo in background
jobs - Elenco dei processi correnti allegati alla shell
ctrl+z - Combinazione di tasti Control + z per sospendere il processo corrente
& - Avvia il processo in background
Cominciamo a usare il comando di shell sleep .sleepfarà semplicemente come viene chiamato, dormirà per un periodo di tempo definito: sleep .
[[email protected] ~]$ jobs
[[email protected] ~]$ sleep 10 &
[1] 12454
[[email protected] ~]$ sleep 20 &
[2] 12479
[[email protected] ~]$ jobs
[1]- Running sleep 10 &
[2]+ Running sleep 20 &
[[email protected] ~]$
Ora, portiamo in primo piano il primo lavoro:
[[email protected] ~]$ fg 1
sleep 10
Se stai seguendo, noterai che il lavoro in primo piano è bloccato nel tuo guscio. Ora mettiamo il processo in stato di stop, quindi riattivalo in background.
- Premi control + z
- Digita: bg 1, inviando il primo lavoro in background e avviandolo.
[[email protected] ~]$ fg 1
sleep 20
^Z
[1]+ Stopped sleep 20
[[email protected] ~]$ bg 1
[1]+ sleep 20 &
[[email protected] ~]$
nohup
Quando si lavora da una shell o da un terminale, vale la pena notare che per impostazione predefinita tutti i processi e i lavori collegati alla shell terminano quando la shell viene chiusa o l'utente si disconnette. Quando si utilizza nohup, il processo continuerà a essere eseguito se l'utente si disconnette o chiude la shell a cui è collegato il processo.
[[email protected]]# nohup ping www.google.com &
[1] 27299
nohup: ignoring input and appending output to ‘nohup.out’
[[email protected]]# pgrep ping
27299
[[email protected]]# kill -KILL `pgrep ping`
[1]+ Killed nohup ping www.google.com
[[email protected] rdc]# cat nohup.out
PING www.google.com (216.58.193.68) 56(84) bytes of data.
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms
comando ps
Il psviene comunemente utilizzato dagli amministratori per esaminare le istantanee di un processo specifico. ps è comunemente usato con grep per filtrare un processo specifico da analizzare.
[[email protected] ~]$ ps axw | grep python
762 ? Ssl 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid
1296 ? Ssl 0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P
15550 pts/0 S+ 0:00 grep --color=auto python
Nel comando precedente, vediamo tutti i processi che utilizzano l' interprete python . Con i risultati è stato incluso anche il nostro comando grep, alla ricerca della stringa python .
Di seguito sono riportate le opzioni della riga di comando più comuni utilizzate con ps .
Interruttore | Azione |
---|---|
un | Esclude i vincoli dei soli processi di reporting per l'utente corrente |
X | Mostra i processi non collegati a una tty o shell |
w | Formatta la visualizzazione ampia dell'output |
e | Mostra l'ambiente dopo il comando |
-e | Seleziona tutti i processi |
-o | Output formattato definito dall'utente |
-u | Mostra tutti i processi di un utente specifico |
-C | Mostra tutti i processi per nome o ID processo |
--ordinare | Ordina i processi per definizione |
Per vedere tutti i processi in uso dall'utente nessuno :
[[email protected] ~]$ ps -u nobody
PID TTY TIME CMD
1853 ? 00:00:00 dnsmasq
[[email protected] ~]$
Per visualizzare tutte le informazioni sul processo firewalld :
[[email protected] ~]$ ps -wl -C firewalld
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 762 1 0 80 0 - 81786 poll_s ? 00:00:01 firewalld
[[email protected] ~]$
Vediamo quali processi consumano più memoria:
[[email protected] ~]$ ps aux --sort=-pmem | head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cnetos 6130 0.7 5.7 1344512 108364 ? Sl 02:16 0:29 /usr/bin/gnome-shell
cnetos 6449 0.0 3.4 1375872 64440 ? Sl 02:16 0:00 /usr/libexec/evolution-calendar-factory
root 5404 0.6 2.1 190256 39920 tty1 Ssl+ 02:15 0:27 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1
cnetos 6296 0.0 1.7 1081944 32136 ? Sl 02:16 0:00 /usr/libexec/evolution/3.12/evolution-alarm-notify
cnetos 6350 0.0 1.5 560728 29844 ? Sl 02:16 0:01 /usr/bin/prlsga
cnetos 6158 0.0 1.4 1026956 28004 ? Sl 02:16 0:00 /usr/libexec/gnome-shell-calendar-server
cnetos 6169 0.0 1.4 1120028 27576 ? Sl 02:16 0:00 /usr/libexec/evolution-source-registry
root 762 0.0 1.4 327144 26724 ? Ssl 02:09 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
cnetos 6026 0.0 1.4 1090832 26376 ? Sl 02:16 0:00 /usr/libexec/gnome-settings-daemon
[[email protected] ~]$
Vedi tutti i processi per centesimi utente e formato, visualizzando l'output personalizzato -
[[email protected] ~]$ ps -u cnetos -o pid,uname,comm
PID USER COMMAND
5802 centos gnome-keyring-d
5812 cnetos gnome-session
5819 cnetos dbus-launch
5820 cnetos dbus-daemon
5888 cnetos gvfsd
5893 cnetos gvfsd-fuse
5980 cnetos ssh-agent
5996 cnetos at-spi-bus-laun
comando pstree
pstreeè simile a ps ma non viene utilizzato spesso. Visualizza i processi in modo più ordinato.
[[email protected] ~]$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
├─caribou───2*[{caribou}]
├─cgrulesengd
├─chronyd
├─colord───2*[{colord}]
├─crond
├─cupsd
L'output totale di pstree può superare le 100 righe. Di solito, ps fornisce informazioni più utili.
Comando in alto
topè uno dei comandi più utilizzati per la risoluzione dei problemi di prestazioni in Linux. È utile per le statistiche in tempo reale e il monitoraggio dei processi in Linux. Di seguito è riportato l'output predefinito di top quando viene attivato dalla riga di comando.
Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 2.0 sy, 0.0 ni, 95.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1879668 total, 177020 free, 607544 used, 1095104 buff/cache
KiB Swap: 3145724 total, 3145428 free, 296 used. 1034648 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5404 root 20 0 197832 48024 6744 S 1.3 2.6 1:13.22 Xorg
8013 centos 20 0 555316 23104 13140 S 1.0 1.2 0:14.89 gnome-terminal-
6339 centos 20 0 332336 6016 3248 S 0.3 0.3 0:23.71 prlcc
6351 centos 20 0 21044 1532 1292 S 0.3 0.1 0:02.66 prlshprof
Tasti di scelta rapida comuni utilizzati durante l'esecuzione di top ( è possibile accedere ai tasti di scelta rapida premendo il tasto mentre top è in esecuzione nella shell).
Comando | Azione |
---|---|
b | Abilita / disabilita l'evidenziazione in grassetto nel menu superiore |
z | Cambia lo schema dei colori |
l | Cicla l'intestazione media del carico |
m | Cicla l'intestazione media della memoria |
t | Intestazione delle informazioni sull'attività |
h | Menu della guida |
MAIUSC + F | Personalizza l'ordinamento e la visualizzazione dei campi |
Di seguito sono riportate le opzioni della riga di comando comuni per top .
Comando | Azione |
---|---|
-o | Ordina per colonna (può anteporre - o + per ordinare in ordine crescente o decrescente) |
-u | Mostra solo i processi di un utente specificato |
-d | Aggiorna il tempo di ritardo della parte superiore |
-O | Restituisce un elenco di colonne che in alto possono applicare l'ordinamento |
Ordinamento schermata delle opzioni in alto, presentato usando Shift + F . Questa schermata consente la personalizzazione della visualizzazione superiore e delle opzioni di ordinamento.
Fields Management for window 1:Def, whose current sort field is %MEM
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end!
* PID = Process Id TGID = Thread Group Id
* USER = Effective User Name ENVIRON = Environment vars
* PR = Priority vMj = Major Faults delta
* NI = Nice Value vMn = Minor Faults delta
* VIRT = Virtual Image (KiB) USED = Res+Swap Size (KiB)
* RES = Resident Size (KiB) nsIPC = IPC namespace Inode
* SHR = Shared Memory (KiB) nsMNT = MNT namespace Inode
* S = Process Status nsNET = NET namespace Inode
* %CPU = CPU Usage nsPID = PID namespace Inode
* %MEM = Memory Usage (RES) nsUSER = USER namespace Inode
* TIME+ = CPU Time, hundredths nsUTS = UTS namespace Inode
* COMMAND = Command Name/Line
PPID = Parent Process pid
UID = Effective User Id
in alto , che mostra i processi per l'utente rdc e ordinati in base all'utilizzo della memoria -
PID USER %MEM PR NI VIRT RES SHR S %CPU TIME+ COMMAND
6130 rdc 6.2 20 0 1349592 117160 33232 S 0.0 1:09.34 gnome-shell
6449 rdc 3.4 20 0 1375872 64428 21400 S 0.0 0:00.43 evolution-calen
6296 rdc 1.7 20 0 1081944 32140 22596 S 0.0 0:00.40 evolution-alarm
6350 rdc 1.6 20 0 560728 29844 4256 S 0.0 0:10.16 prlsga
6281 rdc 1.5 20 0 1027176 28808 17680 S 0.0 0:00.78 nautilus
6158 rdc 1.5 20 0 1026956 28004 19072 S 0.0 0:00.20 gnome-shell-cal
Visualizzazione di campi superiori validi (condensati) -
[[email protected] ~]$ top -O
PID
PPID
UID
USER
RUID
RUSER
SUID
SUSER
GID
GROUP
PGRP
TTY
TPGID
kill Command
Il killcomando viene utilizzato per terminare un processo dalla shell dei comandi tramite il suo PID. Quando si uccide un processo, è necessario specificare un segnale da inviare. Il segnale fa sapere al kernel come vogliamo terminare il processo. I segnali più comunemente usati sono:
SIGTERMè implicito poiché il kernel fa sapere a un processo che dovrebbe fermarsi non appena è sicuro farlo. SIGTERM offre al processo l'opportunità di uscire con garbo ed eseguire operazioni di uscita sicure.
SIGHUPla maggior parte dei demoni si riavvierà quando verrà inviato SIGHUP . Viene spesso utilizzato nei processi quando sono state apportate modifiche a un file di configurazione.
SIGKILLpoiché SIGTERM equivale a chiedere l'arresto di un processo. Il kernel necessita di un'opzione per terminare un processo che non rispetterà le richieste. Quando un processo viene bloccato , l' opzione SIGKILL viene utilizzata per arrestare il processo in modo esplicito.
Per una lista fuori tutti i segnali che possono essere inviati con uccidere l' -l opzione può essere utilizzata -
[[email protected]]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[[email protected] rdc]#
Utilizzo di SIGHUP per riavviare il sistema.
[[email protected]]# pgrep systemd
1
464
500
643
15071
[[email protected]]# kill -HUP 1
[[email protected]]# pgrep systemd
1
464
500
643
15196
15197
15198
[[email protected]]#
pkillconsentirà all'amministratore di inviare un segnale kill tramite il nome del processo.
[[email protected]]# pgrep ping
19450
[[email protected]]# pkill -9 ping
[[email protected]]# pgrep ping
[[email protected]]#
killallucciderà tutti i processi. Fai attenzione a usare killall come root, poiché ucciderà tutti i processi per tutti gli utenti.
[[email protected]]# killall chrome
Comando gratuito
freeè un comando piuttosto semplice spesso utilizzato per controllare rapidamente la memoria di un sistema. Visualizza la quantità totale di memoria fisica e di swap utilizzata.
[[email protected]]# free
total used free shared buff/cache available
Mem: 1879668 526284 699796 10304 653588 1141412
Swap: 3145724 0 3145724
[[email protected]]#
bel comando
niceconsentirà a un amministratore di impostare la priorità di pianificazione di un processo in termini di utilizzo della CPU. La bellezza è fondamentalmente il modo in cui il kernel pianificherà intervalli di tempo della CPU per un processo o lavoro. Per impostazione predefinita, si presume che al processo sia concesso lo stesso accesso alle risorse della CPU.
Innanzitutto, usiamo top per verificare la correttezza dei processi attualmente in esecuzione.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28 root 39 19 0 0 0 S 0.0 0.0 0:00.17 khugepaged
690 root 39 19 16808 1396 1164 S 0.0 0.1 0:00.01 alsactl]
9598 rdc 39 19 980596 21904 10284 S 0.0 1.2 0:00.27 tracker-extract
9599 rdc 39 19 469876 9608 6980 S 0.0 0.5 0:00.04 tracker-miner-a
9609 rdc 39 19 636528 13172 8044 S 0.0 0.7 0:00.12 tracker-miner-f
9611 rdc 39 19 469620 8984 6496 S 0.0 0.5 0:00.02 tracker-miner-u
27 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
637 rtkit 21 1 164648 1276 1068 S 0.0 0.1 0:00.11 rtkit-daemon
1 root 20 0 128096 6712 3964 S 0.3 0.4 0:03.57 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.50 ksoftirqd/0
7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:02.07 rcu_sched
Vogliamo concentrarci sulla colonna NICE rappresentata da NI . L'intervallo di gentilezza può essere compreso tra -20 e positivo 19. -20 rappresenta la massima priorità assegnata.
nohup nice --20 ping www.google.com &
renice
renice ci consente di modificare la priorità corrente di un processo già in esecuzione.
renice 17 -p 30727
Il comando precedente abbasserà la priorità del nostro comando del processo ping .