Comandos shell para procesos

Comandos shell para procesos

Comandos shell para procesos


comando pgrep


El comando pgrep recoge una expresión regular de la línea de comandos, y nos muestra el/los ID de los procesos que coincidan con dicha expresión regular. Podría definirse como una simbiosis entre los comandosps y grep. Pongamos el ejemplo de querer saber los ID de todos los procesos que están corriendo en nuestra máquina, referentes a la expresión regular ‘httpd’ (procesos web de apache). El siguiente comando nos mostraría todos los ID de procesos httpd en nuestro sistema:

root@localhost:~$ pgrep httpd
2445
2446
2449
2545

Ya podéis imaginar el buen uso que podemos dar a este comando. Por ejemplo, si no disponemos de monitorización del servicio web de un servidor, y necesitamos que cuando apache caiga, automáticamente se reinicie. Sé que no sería la manera más adecuada de hacerlo, pero es un buen ejemplo. Podríamos programar un script que revisara los procesos httpd corriendo en el sistema, y que en caso de ser igual a 0, reiniciara el servicio.

Comando top


El comando TOP muestra a tiempo real un listado de los procesos que se están ejecutando en el sistema, especificando además el % de Cpu y Memoria que están utilizando, sus IDs, usuarios que lo están ejecutando, etc. Todo esto y mucho más lo hace una de las herramientas imprescindibles para la administración de cualquier tipo de sistema Unix y derivado.

La salida por pantalla de Top, puede dividirse en dos partes, la “cabecera” muestra entre otras cosas, el Uptime del servidor, nº de usuarios conectados y load average. En la siguiente línea podemos ver el nº de procesos ejecutandose en el sistema, así como el uso de disco, memoria y cpus.

Posteriormente podemos observar un listado de procesos, que pueden ser ordenados por uso de cpu o memoria, lo que es una excelente ayuda para detectar procesos que consumen excesivos recursos en el servidor. Este listado, muestra varios detalles de cada uno de los procesos, como pueden ser el PID de proceso, usuario que lo ejecuta, %cpu y memoria que consume, comando que está ejecutando o tiempo de ejecución del proceso entre otros.

Como siempre digo, toda la información necesaria para sacar el máximo partido al proceso la tenemos en man:

man top

No obstante, paso a detallar algunas de las opciones que podemos pasarle al comando: Opciones del comando TOP: -c : Para visualizar la línea de comandos completa de cada proceso, activado mostrará las rutas completas, mientras que desactivandolo solo muestra el nombre del programa, ejemplo:

top -c:

 4969 root      20   0 55092  39m   9m S   14  7.8  26:08.38 /usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7

top

 4969 root      20   0 59996  39m   9m S   16  7.8  26:05.87 Xorg

-d : Intervalo de actualización y refresco, podemos asignarle un valor numérico (segundos) que determinará cada cuanto actualice la información. -U : Monitorizar solamente los procesos de un determinado UID. -p : Monitorizar solamente los ID de procesos especificados, ejemplo:

top -p12 -p133

-n : Especificaremos el nº de veces que actualizará hasta que finalice la ejecución de Top, ejemplo:

top -n4 # Refrescará la información cuatro veces y finalizará la ejecución de TOP.

Comando Kill

COMANDO kill Básicamente, existen 4 maneras de matar eficazmente un proceso en Linux: matarlo por el nombre, mediante la especificación de una parte del nombre, por el PID, señalando la ventana del proceso con el cursor del mouse. Veamos una por una... Kill: matar un proceso usando su PID La forma más complicada pero al mismo tiempo más precisa de matar un proceso es a través de su PID (siglas en inglés de "Identificador de Proceso").

Cualquiera de estas 3 variantes puede servir:

kill -TERM pid
kill -SIGTERM pid
kill -15 pid

Se puede usar el nombre de la señal (TERM o SIGTERM) que se desea mandar al proceso o su número de identificación (15). Para ver un listado completo de las posibles señales, sugiero verificar el manual de kill. Para ello, ejecutá:

 man kill

Veamos un ejemplo de cómo matar Firefox: Primero, hay que averiguar el PID del programa:

 ps -ef | grep firefox

Ese comando devolverá algo parecido a esto:

 1986 ?        Sl     7:22 /usr/lib/firefox-3.5.3/firefox

Usamos el PID devuelto por el comando anterior para aniquilar el proceso:

 kill -9 1986

killall: matar un proceso usando su nombre Este comando es bien fácil

 killall nombre_proceso

Un dato a tener en cuenta al usar este método es que en caso de que haya más de una instancia de ese programa ejecutándose, se cerrarán todas. pkill: matar un proceso usando parte de su nombre Es posible aniquilar un proceso especificando el nombre completo o parte del nombre. Eso significa que no hay necesidad de que recuerdes el PID del proceso para enviar la señal.

 pkill parte_nombre_proceso

Como contrapartida, este método aniquilará todos los procesos que contengan la palabra ingresada. Eso significa que si tenemos abiertos 2 procesos que comparten una palabra en el nombre, se cerrarán ambos.  xkill: matar un proceso seleccionando la ventana con el mouse Este es el método más sencillo y el más práctico. En caso de desastre, simplemente presioná Alt + F2 para que se abra el cuadro de diálogo que te permitirá ejecutar comandos. Desde allí, ejecutá el siguiente comando:

 xkill

El cursor del mouse se transformará en una pequeña calavera. Todo lo que resta es hacer clic en la ventana que querés cerrar y voilá. Chau proceso. Algunos comentarios finales Para terminar, quería compartir algunos consejos que pueden ser de utilidad. En Linux, al igual que en Windows, cuando un proceso se cuelga, generalmente se puede cerrar la ventana en cuestión haciendo clic en el botón Cerrar (que tiene la forma de una X). Luego de unos segundos, aparecerá una ventana preguntándonos si realmente queremos aniquilar el proceso puesto que éste no responde adecuadamente. Le damos que sí y listo.

Para terminar, quería compartir algunos consejos que pueden ser de utilidad. En Linux, al igual que en Windows, cuando un proceso se cuelga, generalmente se puede cerrar la ventana en cuestión haciendo clic en el botón Cerrar (que tiene la forma de una X). Luego de unos segundos, aparecerá una ventana preguntándonos si realmente queremos aniquilar el proceso puesto que éste no responde adecuadamente. Le damos que sí y listo. Eso quiere decir que los métodos aquí descriptos deberían ser utilizados cuando no pasa nada al hacer clic en el botón Cerrar de la ventana en cuestión. En caso de desastre mayor, no olvides que antes de presionar es posible realizar un reinicio "seguro".

Por último, puede ser de mucha utilidad descubrir cuáles son los procesos que están ejecutándose actualmente. Para ello, los diferentes entornos de escritorio (GNOME, KDE, etc.) tienen herramientas gráficas que facilitan esta tarea. No obstante, en caso de que no puedas acceder a ellas o simplemente desees hacerlo desde el terminal, podés ejecutar lo siguiente:

 top

En caso de que esto no funcione o que no tengas el paquete correspondiente instalado, siempre podés ejecutar:

 ps -A

 ps axu

Esto listará todos los procesos en ejecución, junto con sus respectivos nombres y PIDs.


Comando ps

Una entrada para los que se inician en el mundo Unix/Linux. El comando ps muestra por pantalla un listado de los procesos que se están ejecutando en el sistema.

Si no añadimos ningún parámetro, ps mostrará los procesos del usuario con el que estamos logueados. Por otra parte, los parámetros más básicos a conocer son los siguientes:

-axu Lista los procesos de todos los usuarios con información añadida (destacamos más abajo).

-a Lista los procesos de todos los usuarios.

-u Lista información del proceso como por ejemplo el usuario que lo está corriendo, la utilización de Cpu y memoria, etc.

-x Lista procesos de todas las terminales y usuarios

-l Muestra información que incluye el UID y el valor “nice“.

–forest – Muestra el listado procesos en un formato tipo árbol que permite ver como los procesos interactuan entre si, podría ser algo similar al comando pstree.
Ejemplo de uso del comando ps:

 

 

 

Image
FRUTEROLOCO 

Linux

Macos
Windows
Android
Drupal
Joomla
....