COMANDOS PARA GESTIONAR PROCESOS
Cada programa que se ejecuta es un proceso con recursos
asignados y gestionado por el kernel. La
gestión de procesos comprende la monitorización,
detención y cambio de prioridad de los procesos.
- MONITORIZACIÓN DE PROCESOS
Comando PS (process success)
Sintaxis: ps [options]
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.
Esta
orden admite opciones de las versiones ps propias de System V (precedidas
por un guión), de BSD (sin guiones) y de GNU (precedidas por dos
guiones).
Opciones del comando ps:
-a,listalos procesos de todos los usuarios.-A,ídem a la opción –e-e,visualiza información sobre ”todos“ los procesos del sistema.-f,visualiza los parámetros con los que se levanto el proceso- –forest – Muestra el listado procesos en un formato tipo árbol que permite ver como los procesos interactúan entre sí, podría ser algo similar al comando pstree.
-j,visualiza información sobre el PGID y SID.- -l, formato largo. Muestra la prioridad, el pid del proceso padre entre otras informaciones(difiere al quitar el signo menos )
- -N, niega el efecto de cualquier opción que se haya especificado.
-u,Lista información de procesos del usuario que lo está corriendo, la utilización de Cpu y memoria, etc.-Uusr, Lista los procesos creados por el usuario “usr”.-x,muestra los procesos que no están asociados a ningún terminal del usuario. Útil para ver los “demonios” (programas residentes) no iniciados desde el terminal.-eH,Muestra el árbol de procesos.axf,Lo mismo en formato BSD.-ec,El comando que se está ejecutando, sin la ruta, solo el nombre real.-el,Muestra formato largo de varias columnas, muy práctico.-el,No muestra procesos, lista todos los códigos de formatos.
Ejemplos de uso:
ps -u root
-N, visualiza todos los procesos que no sean del usuario root.
ps -aux,
visualiza información detallada de todos los procesos.
Comando PSTREE
Sintaxis:pstree [options] [PID
| user]
Muestra los procesos en
forma de árbol, pstree --help te da las opciones más comunes.
Recomiendo uses lo uses con la opción -A y -G para que te un árbol con líneas
con líneas estilo ASCII y de terminal VT100 respectivamente, puedes añadir
también -u para mostrar entre paréntesis al usuario propietario del proceso:
Opciones:
-a Incluye en el árbol de
procesos la línea de comandos que se usó para iniciar el proceso.
-c Deshabilita la unión de
procesos hijos con el mismo nombre (réplicas de un mismo proceso).
-G Usa los caracteres de
línea para dibujar el árbol. La representación del árbol es más clara, pero no
funciona al re direccionar la salida.
-h Remarca la jerarquía
del proceso actual (normalmente el terminal). No funciona al re direccionar la
salida.
-n Por defecto los
procesos con mismo padre se ordenan por el nombre. Esta opción fuerza a ordenar
los procesos por su PID.
-p Incluye el PID de los
procesos en el árbol.
Comando TOP
Sintaxis: top
[options]
El comando top ofrece una lista de los procesos similar
al comando ps, pero la salida se actualiza continuamente. Es especialmente útil
cuando es necesario observar el estado de uno o más procesos o comprobar los
recursos que consumen.
Opciones:
-i Ignora los procesos inactivos, listando únicamente los
que utilizan recursos del sistema.
-d Especifica el ritmo de actualización de la pantalla en
segundos. Es posible especificar decimales.
Ordenes
interactivas:
h Muestra una pantalla de ayuda.
q Sale del programa.
kKill. Permite detener un proceso.
rRenice. Permite alterar la prioridad de un proceso.
- TERMINAR PROCESOS.
A veces, es posible que necesite detener
(terminar) un proceso. El proceso se puede encontrar en un bucle infinito. O
bien, es posible que haya iniciado un trabajo grande que desea detener antes de
finalizarlo. Puede terminar cualquier proceso propio. El súper usuario puede
terminar cualquier proceso del sistema, excepto los procesos con ID de
proceso 0, 1, 2, 3 y 4. Es muy probable que al
terminar estos procesos, se produzca un fallo en el sistema.
Kill es un comando unix/linux que permite enviar señales a uno o
varios procesos del sistema a través de la shell (bash, ksh,
etc). Las señales más utilizadas suele ser la de matar un proceso (9 ó
SIGKILL), pararlo (TERM) o reiniciarlo (1 ó HUP) pero hay muchas más que pueden
ser útiles.
Sintaxis: kill [señal] [PID]
Donde:
Señal:es el valor entero o nombre de la señal que
enviaremos al proceso. El valor de la señal se puede especificar en minúsculas
o mayúsculas, pero normalmente se especifica en mayúsculas. Si se omite laseñal
en el comando kill, toma por defecto el valor SIGTERM (señal 15, salir de
manera correcta).
PID:Es el ID del proceso que desea terminar.
Dado que el comando kill
termina procesos por su PID, las formas de conocer el PID del proceso es
mediante el comando ps o
el comando pidof el cual devuelve el PID del proceso.
El listado
completo de señales disponibles puede
visualizarse ejecutando kill -l:
$ 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
Ejemplos:
Para solicitar la finalización de un proceso
# kill
6574
Para finalizar varios
procesos
# kill
3454 3459 3750
Para forzar que uno o varios procesos terminen de forma
inmediata (sin solicitar ni
preguntar…) usamos la señal SIGKILL (9).
# kill -9
6574
Comando KILLALL
El comando killall, que funciona de manera similar
a kill, pero con la diferencia de
en vez de indicar un PID se indica el nombre del programa, lo que afectará a
todos los procesos que tengan ese nombre. Asi por ejemplo si se tienen varias
instancias ejecutándose del proxy server squid, con killall squid eliminará todos los procesos que se
esten ejecutando con el nombre 'squid'
killall -u pepe tiene un comportamiento peligroso ya que mata todos los procesos del
usuario pepe, colgando el sistema si
el usuario es el root.
killall -s USR1 dd enviar la señal USR1 al proceso dd
killall -9 dd termina el proceso dd proceso en forma forzosa.
killall -HUP httpd
(manda una señal de "colgar", detenerse releer sus archivos de
configuración y reiniciar)
killall -KILL -i squid (manda señal de matar a todos los
procesos squid pero pide
confirmación en cada uno)
Ejemplo de salidas del
comando killall
-l
Comando PKILL
Este
comando pkill utiliza grep para buscar todos los procesos que coincidan con el
criterio especificado y les manda la señal SIGTERM.
pkillfire mataría tanto el proceso firefox como el proceso firebird,
dado que la cadena fire aparece en ambos.
En caso que queramos
terminar procesos por el nombre del proceso,
se usa el comando killall y si queremos terminar procesos por el PDI se usa el comando kill
Consejo - Cuando
se utiliza el comando pkill para terminar un proceso, primero,
intente usar el comando por sí mismo, sin incluir una opción de señal. Espere
unos minutos para ver si el proceso termina antes de utilizar el
comando pkill con la señal -9.
$ pgrep
process
El proceso terminado ya
no se debería mostrar en el resultado del comando pgrep.Comando NICE
Permite cambiar la
prioridad de un proceso. Por defecto, todos los procesos tienen una prioridad
igual ante el CPU que es de 0. Con nice es posible iniciar un programa
(proceso) con la prioridad modificada, más alta o más baja según se requiera.
Las prioridades van de -20 (la más alta) a 19 la más baja. Solo root o el
superusuario puede establecer prioridades negativas que son más altas. Con la
opción -l de ps es posible observar la columna NI que
muestra este valor.
Comando RENICE
Asi como nice establece
la prioridad de un proceso cuando se incia su ejecución, renicepermite alterarla en tiempo
real, sin necesidad de detener el proceso.
- OTROS COMANDOS
NOHUP Y &
Cuando se trata ejecutar
procesos en background (segundo plano) se utiliza el comandonohup o el operador & . Aunque realizan
una función similar, no son lo mismo.
Si se desea liberar la
terminal de un programa que se espera durará un tiempo considerable
ejecutándose, entonces se usa . Esto funciona mejor cuando el resultado del
proceso no es necesario mandarlo a la salida estándar (stdin), como por ejemplo
cuando se ejecuta un respaldo o se abre un programa Xwindow desde la consola o
terminal. Para lograr esto basta con escribir el comando en cuestión y agregar
al final el símbolo & (ampersand).
$> yes > /dev/null &
$> tar czf respaldo /documentos/* > /dev/null/
&
$> konqueror & (con estos ejemplos se ejecuta
el comando y se libera la terminal regresando el prompt)
Sin embargo lo anterior
produce que el padre del proceso PPID que se invocó sea el proceso de la
terminal en si, por lo que si cerramos la terminal o salimos de la sesión
también se terminaran los procesos hijos que dependan de la terminal, no muy
conveniente si se desea que el proceso continué en ejecución.
Para solucionar lo
anterior, entonces se usa el comando nohup que permite al igual que '&'
mandar el proceso y background y que este quede inmune a los hangups (de ahí su
nombre nohup) que es cuando se cuelga o termina la terminal o consola de la
cual se ejecutó el proceso.
$> nohup yes > /dev/null &
$> nohup czf respaldo /documentos/* >
/dev/null/
$> nohup konqueror
Asi
se evita que el proceso se "cuelgue" al cerrar la consola.
Comando JOBS
Si por ejemplo, se tiene
acceso a una única consola o terminal, y se tienen que ejecutar varios comandos
que se ejecutarán por largo tiempo, se pueden entoncescomo ya se vió
previamente con nohup y el operador '&' mandarlos a
segundo plano o background con el objeto de liberar la terminal y continuar
trabajando.
Pero si solo se está en
una terminal esto puede ser difícil de controlar, y para eos tenemos el comando jobs que
lista los procesos actuales en ejecución:
#> yes > /dev/null &
[1] 26837
#> ls -laR > archivos.txt &
[2] 26854
#> jobs
[1]-
Running yes
>/dev/null &
[2]+
Running ls
--color=tty -laR / >archivos.txt &
En el ejemplo previo, se
ejecutó el comando yes y se envió a background (&) y el
sistema devolvió [1] 26837, indicando asi que se trata del trabajo o de la
tarea [1] y su PID, lo mismo con la segunda tarea que es un listado recursivo
desde la raíz y enviado a un archivo, esta es la segunda tarea.
Con los comandos fg (foreground)
y bg background es posible manipular
procesos que esten suspendidos temporalmente, ya sea porque se les envió una
señal de suspensión como STOP (20) o porque al estarlos ejecutando se presionó
ctrl-Z. Entonces para reanudar su ejecución en primer plano usaríamos fg:
#> jobs
[1]-
Stopped yes
>/dev/null &
[2]+
Stopped ls
--color=tty -laR / >archivos.txt &
#> fg %1
#> jobs
[1]+
Running yes
>/dev/null &
[2]-
Stopped ls
--color=tty -laR / >archivos.txt &
Obsérvese como al traer en primer plano al 'job'
o proceso 1, este adquirió el símbolo [+] que indica que esta al frente. Lo
mismo sería con bg que volvería a reinicar el proceso
pero en segundo plano. Y también es posible matar los procesos con kill indicando
el número que devuelve jobs: kill %1, terminaría con el proceso en jobs número
1.
fuente:
No hay comentarios.:
Publicar un comentario