Un proceso, en la terminología POSIX, es un evento continuo que está siendo administrado por el kernel de un sistema operativo. Se genera un proceso cuando inicia una aplicación, aunque hay muchos otros procesos que se ejecutan en segundo plano en su computadora, incluidos programas para mantener la hora exacta de su sistema, monitorear nuevos sistemas de archivos, indexar archivos, etc.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
La mayoría de los sistemas operativos tienen algún tipo de monitor de actividad del sistema para que pueda saber qué procesos se están ejecutando en un momento dado. Linux tiene algunos para elegir, incluidos GNOME System Monitor y KSysGuard. Ambas son aplicaciones útiles en el escritorio, pero Linux también brinda la capacidad de monitorear su sistema en su terminal. Independientemente de lo que elija, es una tarea común para aquellos que toman un papel activo en la administración de su computadora examinar un proceso específico.
En este artículo, demuestro cómo encontrar el ID de proceso (PID) de un programa. Las herramientas más comunes para esto son proporcionadas por el paquete procps-ng, incluido el ps
y pstree
, pidof
y pgrep
comandos.
Encuentra el PID de un programa en ejecución
A veces desea obtener el ID de proceso (PID) de una aplicación específica que sabe que está ejecutando. El pidof
y pgrep
los comandos encuentran procesos por nombre de comando.
El pidof
comando devuelve los PID de un comando, buscando el comando exacto por nombre:
$ pidof bash
1776 5736
El pgrep
El comando permite expresiones regulares (regex):
$ pgrep .sh
1605
1679
1688
1776
2333
5736
$ pgrep bash
5736
Buscar un PID por archivo
Puede encontrar el PID del proceso usando un archivo específico con el fuser
comando.
$ fuser --user ~/example.txt
/home/tux/example.txt: 3234(tux)
Obtener un nombre de proceso por PID
Si tiene el número de PID de un proceso pero no del comando que lo generó, puede hacer una "búsqueda inversa" con ps
:
$ ps 3234
PID TTY STAT TIME COMMAND
5736 pts/1 Ss 0:00 emacs
Lista de todos los procesos
El ps
el comando enumera los procesos. Puede enumerar todos los procesos en su sistema con -e
opción:
$ ps -e | less
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
6 ? 00:00:00 kworker/0:0H-events_highpri
[...]
5648 ? 00:00:00 gnome-control-c
5656 ? 00:00:00 gnome-terminal-
5736 pts/1 00:00:00 bash
5791 pts/1 00:00:00 ps
5792 pts/1 00:00:00 less
(END)
Enumere solo sus procesos
La salida de ps -e
puede ser abrumador, así que usa -U
para ver los procesos de un solo usuario:
$ ps -U tux | less
PID TTY TIME CMD
3545 ? 00:00:00 systemd
3548 ? 00:00:00 (sd-pam)
3566 ? 00:00:18 pulseaudio
3570 ? 00:00:00 gnome-keyring-d
3583 ? 00:00:00 dbus-daemon
3589 tty2 00:00:00 gdm-wayland-ses
3592 tty2 00:00:00 gnome-session-b
3613 ? 00:00:00 gvfsd
3618 ? 00:00:00 gvfsd-fuse
3665 tty2 00:01:03 gnome-shell
[...]
Eso produce 200 procesos menos (más o menos cien, según el sistema en el que lo esté ejecutando) procesos para clasificar.
Puede ver la misma salida en un formato diferente con pstree
comando:
$ pstree -U tux -u --show-pids
[...]
├─gvfsd-metadata(3921)─┬─{gvfsd-metadata}(3923)
│ └─{gvfsd-metadata}(3924)
├─ibus-portal(3836)─┬─{ibus-portal}(3840)
│ └─{ibus-portal}(3842)
├─obexd(5214)
├─pulseaudio(3566)─┬─{pulseaudio}(3640)
│ ├─{pulseaudio}(3649)
│ └─{pulseaudio}(5258)
├─tracker-store(4150)─┬─{tracker-store}(4153)
│ ├─{tracker-store}(4154)
│ ├─{tracker-store}(4157)
│ └─{tracker-store}(4178)
└─xdg-permission-(3847)─┬─{xdg-permission-}(3848)
└─{xdg-permission-}(3850)
Enumere solo sus procesos con contexto
Puede ver contexto adicional para todos los procesos que posee con -u
opción.
$ ps -U tux -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tux 3545 0.0 0.0 89656 9708 ? Ss 13:59 0:00 /usr/lib/systemd/systemd --user
tux 3548 0.0 0.0 171416 5288 ? S 13:59 0:00 (sd-pam)
tux 3566 0.9 0.1 1722212 17352 ? S<sl 13:59 0:29 /usr/bin/pulseaudio [...]
tux 3570 0.0 0.0 664736 8036 ? SLl 13:59 0:00 /usr/bin/gnome-keyring-daemon [...]
[...]
tux 5736 0.0 0.0 235628 6036 pts/1 Ss 14:18 0:00 bash
tux 6227 0.0 0.4 2816872 74512 tty2 Sl+14:30 0:00 /opt/firefox/firefox-bin [...]
tux 6660 0.0 0.0 268524 3996 pts/1 R+ 14:50 0:00 ps -U tux -u
tux 6661 0.0 0.0 219468 2460 pts/1 S+ 14:50 0:00 less
Solucionar problemas con PID
Si tiene problemas con una aplicación específica, o simplemente tiene curiosidad sobre qué más usa una aplicación en su sistema, puede ver un mapa de memoria del proceso en ejecución con pmap
:
$ pmap 1776
5736: bash
000055f9060ec000 1056K r-x-- bash
000055f9063f3000 16K r---- bash
000055f906400000 40K rw--- [ anon ]
00007faf0fa67000 9040K r--s- passwd
00007faf1033b000 40K r-x-- libnss_sss.so.2
00007faf10345000 2044K ----- libnss_sss.so.2
00007faf10545000 4K rw--- libnss_sss.so.2
00007faf10546000 212692K r---- locale-archive
00007faf1d4fb000 1776K r-x-- libc-2.28.so
00007faf1d6b7000 2044K ----- libc-2.28.so
00007faf1d8ba000 8K rw--- libc-2.28.so
[...]
Identificadores de proceso
El procps-ng El paquete tiene todos los comandos que necesita para investigar y monitorear lo que su sistema está usando en cualquier momento. Ya sea que solo tenga curiosidad acerca de cómo encajan todas las partes dispares de un sistema Linux, o si está investigando un error, o si está buscando optimizar el rendimiento de su computadora, aprender estos comandos le brinda una ventaja significativa para comprender su sistema operativo.