Vamos a ver los comandos con los que podemos ver el estado y atributos de los procesos y los comandos que nos permiten cambiar algunas características de los procesos.
Cuando ejecutamos un comando en la consola esta se queda a la espera que termine el proceso que hemos ejecutado. Podemos hacer que comience la ejecución e inmediatamente nos devuelva el control a la consola. Para ello tenemos que utilizar el operador & al final del comando.
[pcm@sal]$
firefox &
[1] 23710
[pcm@sal]$
Si no hubiésemos puesto &, hasta que no cerráramos la aplicación firefox no podríamos usar la consola. Podríamos ver qué estamos ejecutando en esa consola en background con el comando jobs.
[pcm@sal]$
jobs
[1]+ Running firefox &
[pcm@sal]$
Incluso podemos llevar una aplicación que esta corriendo en background a la consola con el comando fg dándole el número de orden asignado (el 1 en el caso del ejemplo). También podemos parar un proceso que esta en la consola pulsando Control+Z o utilizando desde otra consola el comando kill, y luego enviando el proceso a background con bg.
[pcm@sal]$
fg 1
firefox
Si ahora queremos llevarlo a background de nuevo pulsaríamos Control+Z.
[1]+ Stopped firefox
[pcm@sal]$
bg 1
[1]+ firefox &
[pcm@sal]$
Este comando nos permite
ver los procesos que actualmente existen en el sistema. Es un
comando con una amplia parametrización así que se
aconseja repasar la página de manual para hacernos una
idea de lo que es capaz de hacer.
La conjugación más usada es la que se indica abajo, la cual, permite visualizar por la salida estandard TODOS los procesos cargados en la RAM así como sus atributos principales.
[root@sal]#
ps -ef
UID PID PPID C STIME TTY TIME CMD root 1 0 0 Apr07 ? 00:00:01 init [2] root 2 1 0 Apr07 ? 00:00:02 [keventd] root 3 1 0 Apr07 ? 00:00:00 [ksoftirqd_CPU0] root 4 1 0 Apr07 ? 00:00:00 [ksoftirqd_CPU1] root 5 1 0 Apr07 ? 00:00:03 [kswapd] root 6 1 0 Apr07 ? 00:00:00 [bdflush] root 7 1 0 Apr07 ? 00:00:03 [kupdated] root 409 1 0 Apr07 ? 00:00:00 [knodemgrd_0] root 541 1 0 Apr07 ? 00:00:00 [khubd] daemon 865 1 0 Apr07 ? 00:00:00 /sbin/portmap root 955 1 0 Apr07 ? 00:00:03 /sbin/syslogd root 958 1 0 Apr07 ? 00:00:00 /sbin/klogd pcm20 1026 1 0 Apr07 ? 00:00:00 /usr/sbin/famd -T 0 root 1032 1 0 Apr07 ? 00:00:00 /usr/sbin/inetd root 1047 1 0 Apr07 ? 00:00:00 /usr/sbin/lisa root 1150 1 0 Apr07 ? 00:00:01 /usr/sbin/nmbd -D root 1152 1 0 Apr07 ? 00:00:00 /usr/sbin/smbd -D root 1158 1152 0 Apr07 ? 00:00:00 /usr/sbin/smbd -D root 1159 1 0 Apr07 ? 00:00:00 /usr/sbin/sshd root 1168 1 0 Apr07 ? 00:00:00 /sbin/rpc.statd root 1174 1 0 Apr07 ? 00:00:01 /usr/sbin/sensord -f daemon daemon 1205 1 0 Apr07 ? 00:00:00 /usr/sbin/atd root 1208 1 0 Apr07 ? 00:00:00 /usr/sbin/cron root 1313 1 0 Apr07 ? 00:00:02 /usr/sbin/apache root 1325 1 0 Apr07 ? 00:00:00 /usr/bin/hts -F localhost:22 root 1341 1 0 Apr07 ? 00:00:00 /usr/bin/kdm root 1348 1 0 Apr07 tty1 00:00:00 /sbin/getty 38400 tty1 root 1349 1 0 Apr07 tty2 00:00:00 /sbin/getty 38400 tty2 root 1350 1 0 Apr07 tty3 00:00:00 /sbin/getty 38400 tty3 root 1351 1 0 Apr07 tty4 00:00:00 /sbin/getty 38400 tty4 root 1352 1 0 Apr07 tty5 00:00:00 /sbin/getty 38400 tty5 root 1353 1 0 Apr07 tty6 00:00:00 /sbin/getty 38400 tty6 root 1372 1341 0 Apr07 ? 00:14:53 /usr/X11R6/bin/X -nolisten tcp - root 1411 1 0 Apr07 ? 00:00:02 /usr/bin/perl /usr/share/webmin/ root 1418 1341 0 Apr07 ? 00:00:00 -:0
[root@sal]#
Esta pareja de comandos
hacen lo mismo que ps pero con un interface más vistoso,
interactivo y que se refresca en tiempo real. Además, en la
información de salida, además de los atributos propios de cada
proceso, se adjunta un encabezamiento con datos sobre el
consumo de los recursos generales del sistema (% de RAM total
ocupada, % de RAM libre, % de uso de CPU, acumulados de los
distintos estados de los procesos, etc...).
[root@sal]#
top
top - 01:47:25 up 1 day, 3:38, 1 user, load average: 0.01, 0.04, 0.03 Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie Cpu(s): 5.6% user, 8.2% system, 0.0% nice, 86.1% idle Mem: 516528k total, 503012k used, 13516k free, 44320k buffers Swap: 337356k total, 13496k used, 323860k free, 165572k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2078 pcm 19 0 14772 14m 12m S 10.6 2.8 11:37.18 kdeinit 1372 root 12 -10 83448 73m 9228 S 3.5 14.5 14:55.90 XFree86 22682 root 19 0 1084 1084 844 R 3.2 0.2 0:00.30 top 2086 pcm 10 0 101m 97m 23m S 1.3 19.4 21:51.38 netscape-bin 21199 pcm 12 0 30420 29m 13m S 1.3 5.9 0:10.50 java_vm 2100 pcm 12 0 101m 97m 23m S 1.0 19.4 0:09.66 netscape-bin 2075 pcm 11 0 18184 17m 13m S 0.6 3.5 0:21.67 kdeinit 5012 pcm 11 0 10864 10m 4072 S 0.6 2.0 3:13.78 emacs 8591 mysql 10 0 13600 13m 2932 S 0.6 2.6 0:48.99 mysqld 1411 root 10 0 5744 3448 2088 S 0.3 0.7 0:02.43 miniserv.pl 2068 pcm 9 0 12920 12m 10m S 0.3 2.4 1:35.65 kdeinit 8153 root 9 0 944 904 796 S 0.3 0.2 0:09.22 dirmngr 8592 mysql 10 0 13600 13m 2932 S 0.3 2.6 0:54.86 mysqld 21197 pcm 9 0 30420 29m 13m S 0.3 5.9 0:04.70 java_vm 1 root 9 0 500 500 448 S 0.0 0.1 0:01.62 init 2 root 9 0 0 0 0 S 0.0 0.0 0:02.30 keventd
[root@sal]#
htop
Presenta la información de los procesos cargados en las RAM con sus dependencias jerárquicas en un bonito gráfico de arbol.
Estos comandos nos permiten lanzar un proceso con una prioridad determinada el primero y el segundo cambiar la prioridad de un proceso.
Nos permite enviar una señal a un proceso. Por defecto envía la señal de parada al PID que pongamos, de ahí su nombre, pero realmente con un parámetro podemos enviar otros tipos de señales de procesos.
[root@sal]#
kill 22670
[root@sal]#
Para ver la lista de señales soportadas por el comando podemos hacer:
[root@sal]#
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 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 33) SIGRTMIN 34) SIGRTMIN+1 35) SIGRTMIN+2 36) SIGRTMIN+3 37) SIGRTMIN+4 38) SIGRTMIN+5 39) SIGRTMIN+6 40) SIGRTMIN+7 41) SIGRTMIN+8 42) SIGRTMIN+9 43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13 47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-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@sal]#
Las señales más utilizadas son:
SIGKILL Termina el proceso, no puede ser ignorada. Se
puede enviar con kill
-s SIGKILL
pid
o kill -9
pid, que es modo
estándar en otros UNIX.
SIGSTOP Para el proceso, no puede ser ignorada.
SIGTERM Se ordena al proceso que termine, el cual puede ser ignorar la señal. El la señal enviada por defecto.
Con estos comandos vamos a poder enviar señales a procesos, en vez de por PID, por el nombre, con killall y por otras propiedades de los procesos como pueden ser el usuario, el GID, el proceso padre, etc, con pkill. Por ejemplo:
[pcm@sal]#
ps
4548 pts/2 00:00:00 bash 4565 pts/2 00:00:00 gconfd-2 22780 pts/2 00:00:34 xpdf.bin 22824 pts/2 00:00:00 ps
[pcm@sal]#
killall xpdf.bin
[pcm@sal]#
Con esta acción terminaría el proceso 22780.