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 .