Administrador de Linux - Gestión de procesos
A continuación se muestran los comandos comunes que se utilizan con la gestión de procesos: bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.
Trabajar con procesos
Quick Note: Process PID in Linux
En Linux, cada proceso en ejecución recibe un PID o Número de ID de proceso. Este PID es cómo CentOS identifica un proceso en particular. Como hemos comentado, systemd es el primer proceso que se inicia y se le asigna un PID de 1 en CentOS.
Pgrep se utiliza para obtener el PID de Linux para un nombre de proceso determinado.
[root@CentOS]# pgrep systemd
1
[root@CentOS]#
Como se ve, el comando pgrep devuelve el PID actual de systemd.
Gestión básica de procesos y trabajos de CentOS en CentOS
Cuando se trabaja con procesos en Linux, es importante saber cómo se realizan los procesos básicos de primer plano y segundo plano en la línea de comandos.
fg - Trae el proceso a un primer plano
bg - Mover el proceso a un segundo plano
jobs - Lista de los procesos actuales adjuntos al shell
ctrl+z - Combinación de teclas Control + z para dormir el proceso actual
& - Inicia el proceso en segundo plano.
Comencemos a usar el comando de shell sleep .sleepsimplemente hará lo que se llama, dormir durante un período de tiempo definido: dormir .
[root@CentOS ~]$ jobs
[root@CentOS ~]$ sleep 10 &
[1] 12454
[root@CentOS ~]$ sleep 20 &
[2] 12479
[root@CentOS ~]$ jobs
[1]- Running sleep 10 &
[2]+ Running sleep 20 &
[cnetos@CentOS ~]$
Ahora, llevemos el primer trabajo a primer plano:
[root@CentOS ~]$ fg 1
sleep 10
Si lo sigue, notará que el trabajo de primer plano está atascado en su shell. Ahora, pongamos el proceso en suspensión y luego volvamos a habilitarlo en segundo plano.
- Pulsa control + z
- Escriba: bg 1, envíe el primer trabajo en segundo plano e inícielo.
[root@CentOS ~]$ fg 1
sleep 20
^Z
[1]+ Stopped sleep 20
[root@CentOS ~]$ bg 1
[1]+ sleep 20 &
[root@CentOS ~]$
nohup
Cuando se trabaja desde un shell o terminal, vale la pena señalar que, por defecto, todos los procesos y trabajos adjuntos al shell terminarán cuando el shell se cierre o el usuario cierre la sesión. Al usar nohup, el proceso continuará ejecutándose si el usuario cierra la sesión o cierra el shell al que está adjunto el proceso.
[root@CentOS]# nohup ping www.google.com &
[1] 27299
nohup: ignoring input and appending output to ‘nohup.out’
[root@CentOS]# pgrep ping
27299
[root@CentOS]# kill -KILL `pgrep ping`
[1]+ Killed nohup ping www.google.com
[root@CentOS 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
los psLos administradores suelen utilizar este comando para investigar instantáneas de un proceso específico. ps se usa comúnmente con grep para filtrar un proceso específico para analizar.
[root@CentOS ~]$ 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
En el comando anterior, vemos todos los procesos que utilizan el intérprete de Python . También se incluyó con los resultados nuestro comando grep, buscando la cadena python .
A continuación se muestran los modificadores de línea de comando más comunes que se utilizan con ps .
Cambiar | Acción |
---|---|
un | Excluye restricciones de solo los procesos de informes para el usuario actual |
X | Muestra los procesos no adjuntos a un tty o shell |
w | Formatea la visualización de salida amplia de la salida |
mi | Muestra el entorno después del comando. |
-mi | Selecciona todos los procesos |
-o | Salida formateada definida por el usuario |
-u | Muestra todos los procesos de un usuario específico |
-C | Muestra todos los procesos por nombre o id de proceso |
--ordenar | Ordena los procesos por definición |
Para ver todos los procesos en uso por el usuario de nadie :
[root@CentOS ~]$ ps -u nobody
PID TTY TIME CMD
1853 ? 00:00:00 dnsmasq
[root@CentOS ~]$
Para ver toda la información sobre el proceso firewalld :
[root@CentOS ~]$ 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
[root@CentOS ~]$
Veamos qué procesos consumen más memoria:
[root@CentOS ~]$ 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
[root@CentOS ~]$
Ver todos los procesos por centos de usuario y formato, mostrando la salida personalizada -
[cnetos@CentOS ~]$ 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
pstreees similar a ps pero no se usa con frecuencia. Muestra los procesos en forma de árbol más ordenada.
[centos@CentOS ~]$ 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
La salida total de pstree puede superar las 100 líneas. Por lo general, ps proporcionará información más útil.
comando superior
topes uno de los comandos más utilizados al solucionar problemas de rendimiento en Linux. Es útil para estadísticas en tiempo real y monitoreo de procesos en Linux. A continuación se muestra la salida predeterminada de top cuando se abre desde la línea de comandos.
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
Teclas de acceso rápido comunes que se usan mientras se ejecuta top ( se accede a las teclas de acceso rápido presionando la tecla mientras top se ejecuta en su shell).
Mando | Acción |
---|---|
segundo | Habilita / deshabilita el resaltado en negrita en el menú superior |
z | Cicla el esquema de color |
l | Cicla el rumbo promedio de la carga |
metro | Cicla el rumbo promedio de memoria |
t | Encabezado de información de la tarea |
h | Menú de ayuda |
Mayús + F | Personaliza los campos de clasificación y visualización |
A continuación se muestran los modificadores de línea de comando comunes para top .
Mando | Acción |
---|---|
-o | Ordena por columna (puede anteponer - o + para ordenar ascendente o descendente) |
-u | Muestra solo los procesos de un usuario específico |
-re | Actualiza el tiempo de retraso de top |
-O | Devuelve una lista de columnas cuya parte superior puede aplicar ordenación |
Clasificación de pantalla de opciones en la parte superior, presentado usando Shift + F . Esta pantalla permite personalizar la visualización superior y las opciones de clasificación.
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
arriba , mostrando los procesos para el usuario rdc y ordenados por uso de 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
Mostrando campos superiores válidos (condensados) -
[centos@CentOS ~]$ top -O
PID
PPID
UID
USER
RUID
RUSER
SUID
SUSER
GID
GROUP
PGRP
TTY
TPGID
Matar comando
los killEl comando se usa para matar un proceso desde el shell de comandos a través de su PID. Al matar un proceso, necesitamos especificar una señal para enviar. La señal le permite al kernel saber cómo queremos terminar el proceso. Las señales más utilizadas son:
SIGTERMestá implícito ya que el kernel le permite a un proceso saber que debe detenerse pronto, ya que es seguro hacerlo. SIGTERM le da al proceso la oportunidad de salir con gracia y realizar operaciones de salida seguras.
SIGHUPla mayoría de los demonios se reiniciarán cuando se envíen SIGHUP . Esto se usa a menudo en los procesos cuando se han realizado cambios en un archivo de configuración.
SIGKILLya que SIGTERM es el equivalente a pedirle a un proceso que se cierre. El kernel necesita una opción para finalizar un proceso que no cumplirá con las solicitudes. Cuando se cuelga un proceso, la opción SIGKILL se utiliza para cerrar el proceso explícitamente.
Para obtener una lista de todas las señales que se pueden enviar con matar al -l opción se puede utilizar -
[root@CentOS]# 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
[root@CentOS rdc]#
Usando SIGHUP para reiniciar el sistema.
[root@CentOS]# pgrep systemd
1
464
500
643
15071
[root@CentOS]# kill -HUP 1
[root@CentOS]# pgrep systemd
1
464
500
643
15196
15197
15198
[root@CentOS]#
pkillpermitirá al administrador enviar una matanza de señal por el nombre del proceso.
[root@CentOS]# pgrep ping
19450
[root@CentOS]# pkill -9 ping
[root@CentOS]# pgrep ping
[root@CentOS]#
killallmatará todos los procesos. Tenga cuidado al usar killall como root, ya que matará todos los procesos para todos los usuarios.
[root@CentOS]# killall chrome
comando libre
freees un comando bastante simple que se usa a menudo para verificar rápidamente la memoria de un sistema. Muestra la cantidad total de memoria física y de intercambio utilizada.
[root@CentOS]# free
total used free shared buff/cache available
Mem: 1879668 526284 699796 10304 653588 1141412
Swap: 3145724 0 3145724
[root@CentOS]#
buen comando
nicepermitirá que un administrador establezca la prioridad de programación de un proceso en términos de uso de CPU. La bondad es básicamente cómo el kernel programará porciones de tiempo de CPU para un proceso o trabajo. De forma predeterminada, se supone que el proceso tiene el mismo acceso a los recursos de la CPU.
Primero, usemos top para verificar la bondad de los procesos que se están ejecutando actualmente.
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
Queremos centrarnos en la columna NICE representada por NI . El rango de bondad puede estar entre -20 y 19 positivos. -20 representa la prioridad más alta.
nohup nice --20 ping www.google.com &
re bueno
renice nos permite cambiar la prioridad actual de un proceso que ya se está ejecutando.
renice 17 -p 30727
El comando anterior reducirá la prioridad de nuestro comando de proceso de ping .