Páginas

domingo, 1 de febrero de 2009

Registro de Procesos GNU-Linux

Registro de proceso es una característica opcional del kernel que registra la información de cada proceso
que esta siendo utilizado en el sistema el mantiene información detallada sobre cada ingreso del usuario, uso
del CPU, uso de la memoria, transferencia de E/S y nombre de los comandos. Esta información se escribe a
un archivo de registro cada vez que un proceso sale, en esta seccion discutiremos lo siguiente:
· Habilitar registro de procesos
· Revisar información de los registros

Habilitar el Registro de los Procesos
El kernel es la fuente de toda la información que se acumula acerca del registro de los procesos; y por
eso, el primer paso es habilitar registro de proceso para asegurarse que el kernel tiene esta característica habi-
litada. Algunas distribuciones ya vienen en su kernel estándar con esta característica habilitado. Esta carac-
terística se llama BSD Process Accounting.

Una vez el kernel esta en capacidad de registrar proceso necesitara instalar software del manejo de regis-
tro de proceso, el software esta disponible en el GNU en un paquete llamado ACCT .

Registro de proceso no almacenan un archivo si este no existe. Y por esto necesitará asegurarse que el
archivo de registro este presente, sino tendrá que crearlo. Si no ha sido creado cree un archivo vacío y deter-
mina quien tú quiere que pueda leerlo.
# touch /var/log/acct
# chown root /var/log/acct
# chmod 0600

Talvez quiera permitir a algunos usuarios acceso a lectura del archivo, para que ellos puedan utilizar la
herramienta de registro. Debe hacer esto especificando el grupo dueño y una mascara de 0640 en vez de 0600.
Note que para una seguridad mas estricta, usted no querrá que los usuarios tengan acceso a toda la informa-
ción disponible. También tendrá que revisar los permisos en los archivos /var/log/savacct y a /var/log/usracct,
lo cual es utilizado como información cache para el comando sa. Tengan cuidado que algunas distribuciones
pueda ser que coloquen estos archivos de registro en /var/adm.

Después de haber instalado el paquete de registro de proceso talvez tenga que iniciarlo. Esto es causado
por el alto costo de recursos que este proceso de contabilidad produce. Para empezar este proceso ejecuta:
# /usr/sbin/accton /var/log/acct

Talvez quisiera modificar los scripts de inicio para activar este proceso cada vez que encienda el compu-
tador. Algunos comando que viene con el paquete (notablemente el comando (ac y last), actualmente usa el
archivo /var/log/wtmp para guardar su información. Este archivo no es manejado por el kernel, pero es escri-
to por cualquier programa que puede iniciar el script de login.

Revisar la Información de Registro
Una vez haya encendido el registro de procesos, podrá analizar la información que este genera. Existen
varios comandos disponibles para lograr esto, Ellos presentan la información en manera diferente,


Comando ac
El comando ac se utiliza para mostrar cuanto tiempo ha durado la seccion de un usuario en el sistema (ac
despliega esta información en horas), se puede dar la información por días y por usuarios. Sin ninguna opción
el comando muestra el total de hora utilizada por todos los usuarios logueado en el sistema, como se mues-
tra abajo:
$ ac
total 90.12

$ ac debian
total 90.14

Para mostrar el total de hora logueado por cada usuario utilice la sintaxis siguiente:
$ ac -p
debian 89.83
total 89.83

Parta mostrar el uso diario para un usuario de nombre ivelis, use la siguientes sintaxis:
$ ac -d devian
Jan 17 total 2.01
Jan 18 total 4.83
Jan 19 total 13.91
Today total 3.51

Un problema con el comando ac es que si un usuario ha ingresado en más de un terminal a la vez el tiem-
po se sumara a un total de ambas terminales y ac mostrara el tiempo total, esto también es un problema con
usuario que utilizan xterm localmente y usuario que ingresan en varios secciones de telnet al mismo tiempo.


Comando last
El comando last muestra el tiempo especifico que los usuarios entraron y salieron del sistema. Esta lista
puede ser extensa si existen muchos usuarios en el sistema. También podemos a traves de argumentos pasar-
le el nombre del usuario que nos interesa en particular. Aquí les doy dos ejemplos:
[root@gnulinux /root]# last
reboot system boot 2.6.24-16-generi Tue Jan 6 06:46 - 08:08 (01:22)
debian pts/1 :0.0 Mon Jan 5 13:52 - down (00:01)
root pts/0 :0.0 Mon Jan 5 12:30 - down (01:22)
debian tty7 :0 Mon Jan 5 12:24 - down (01:29)
reboot system boot 2.6.24-16-generi Mon Jan 5 12:23 - 13:53 (01:29)
debian pts/0 :0.0 Sun Jan 4 08:55 - down (00:01)

wtmp begins Sun Jan 4 08:55:35 2009

[root@gnulinux /root]# last root
wtmp begins Sun Jan 4 08:55:35 2009


Comando sa
El comando sa nos proporciona un resumen de la información en base a los programas ejecutandose. Por
defecto, muestra cuantas veces el programa fué ejecutado, cual fué el tiempo que se ejecutó realmente, cuan-
to tiempo del CPU consumió, cuanto I/O consumió este, el average del uso de la memoria y el nombre del
programa.
[root@gnulinux /root]# sa | head -5
2576 102.34re 0.32cp 0avio 496k
5 0.09re 0.08cp 0avio 482k gzip
2 7.73re 0.07cp 0avio 18360k gnome-help
3 0.18re 0.07cp 0avio 996k apt-get
2 0.06re 0.06cp 0avio 1878k apt-check

En este comando se desplegán las primeras 5 lineas de salida del comando sa. Observe que el orden de
salida es por el tiempo del CPU. Existen varias otras opciones, como son --sort-real-time y --sort-num-calls.
La primera fila es simplemente el total de todos los campos. Otras opciones también disponibles son:
--print-users Imprime un listado de todos los comandos ejecutados y por quien.
--user-summary Combina todos los programas usados por cada usuario.
-c, --percentages Imprime el porcentaje de los valores del tiempo total del comando de su usuario, sistema y tiempo real.
-n (--sort-num-calls) Ordena por el número de llamadas
-k: Ordena por el average del uso de memoria
-t, --print-ratio Basado en cada entrada, imprime el average de tiempo real a la suma de sistema y tiempos del usuario;
si la suma del sistema y el tiempo del usuario es demasiado pequeño para reportar (su suma es cero), se
imprimira "*ignore*" en este campo.


Comando lastcomm
El comando lastcomm nos brinda información de los últimos comandos que los usuarios han ejecutado.
Si ejecutamos lastcomm sin ningún argumento este simplemente nos imprimirá a pantalla todos los coman-
dos en el archivo de record en /var/log/pacct. Por ejemplo para verificar cual usuario ejecuto el comando find
y ver cual usuario estuvo ingresado el tty0, escriba:
$ lastcomm find tty*
find man ?? 0.00 secs Tue Jan 20 07:52
find root ?? 0.00 secs Tue Jan 20 07:52
find root ?? 0.00 secs Tue Jan 20 07:35
find root ?? 0.00 secs Tue Jan 20 07:35


Esta sentencia imprimirá a pantalla cualquier entrada que iguale find o tty0 en cualquier de los campos
(comando, nombre 0 terminal). Si desea sólo encontrar los item que igualen *all* de los argumentos en la
línea de comandos, deberá usar la opción -strict-match. Por ejemplo para listar todas las ejecuciones del
comando ls usadas por el usuario root en el terminal tty1, escriba:
$ lastcomm strict-match ls root tty | last -5
debian pts/0 :0.0 Tue Jan 20 06:08 still logged in
debian tty7 :0 Tue Jan 20 06:08 still logged in
reboot system boot 2.6.24-16-generi Tue Jan 20 06:07 - 08:12 (02:05)
debian pts/0 :0.0 Mon Jan 19 19:44 - 19:49 (00:04)
debian tty7 :0 Mon Jan 19 19:39 - 19:50 (00:10)

El orden como se escribe la sentencia es importante.

Modificar Valores en /proc

El sistema de archivos /proc es una herramienta excelente para monitorear el sistema directamente. En
este directorio /proc existen directorios de nombre numéricos. Estos nombres se refieren a los PIDs de los
procesos en ejecución y los archivos dentro de estos directorios contienen información correspondiente al
proceso. Los archivos con nombres no numéricos corresponden a procesos del sistema y por ende con
información pertinente al sistema mismo.
Los archivos representando procesos no tienen permiso de Escritura (Write). Comúnmente solo los archi-
vos que contienen información de configuración pueden ser alterados. Recuerde que esos archivos son uti-
lizados y creados directamente por el kernel y modificarlo puede causar comportamiento impredecible.
El directorio /proa/sys en particular contiene información de la configuración del sistema. Por esto infor-

mación del sistema puede ser directamente alterada a través de estos archivos. Vamos a dar un pequeño
ejemplo de una situación que se puede dar en un servidor de páginas web, que en la compilación de su
kernel se dio un número de handles que directamente afecta el número de archivos que puede abrir. Bueno
este limite se esta viendo amenazado por el volumen alto de visitantes a las paginas web que esta sirvien-
do.
Ahora la pregunta es ¿Qué podemos hacer? La respuesta es que podemos modificar el archivo
/proc/sys/fs/file-max el cual nos dice por ejemplo:
[root@gnulinux /]# cat /proc/sys/fs/file-max
4096

[root@gnulinux /]# echo valor_modificado /proc/sys/fs/file-max
1.- Determine en su equipo cual es el valor actual y triplíquelo. Luego desvuélvalo a su estado original.
software utilizado = KompoZer (editor linux de páginas web)

No hay comentarios:

Publicar un comentario