miércoles, 1 de marzo de 2017

Encontrar procesos con mayor consumo en Linux

Lo se, mucho tiempo ha pasado, pero muchas cosas me han pasado, pero quiero no quiero aburrir con eso.

Hoy les traigo una traducción de un post que se me hizo muy bueno y practico a la vez. El original en ingles lo pueden encontrar en esta liga Find Top Running Process By Highest Memory and CPU Usage in Linux

Comencemos entonces.

Encontrar procesos con mayor consumo en Linux

Introducción


Los administradores mas eficientes, normalmente son personas flojas. La razón no es porque no hacen nada o pierden su tiempo en su trabajo. En muchos casos es porque automatizan sus tareas diarias. Por eso, no necesitan estar pegados al servidor y usan su tiempo para aprender nuevas tecnologías y estar al día en su área.

Parte de automatizar tareas, es aprender como los scripts hagan lo que debes hacer por ti mismo. Continuamente agregar nuevos comandos a tu base de conocimiento es importante. Por esa razón, en este articulo se compartirá un truco para conocer, cuales procesos están consumiendo mucha memoria y procesador en un equipo Linux.


Eso es, ahora veamos el detalle.

Comando


El siguiente comando mostrará la lista de procesos con mayor consumo de memoria RAM y CPU en forma descendente.

# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

Si se desea ver la lista completa, quitar el comando 'head' y el pipe.

Pequeña explicación


El parámetro -o (o -format) del comando ps, te permite especificar el formato de salida, es decir, el orden de los valor a mostrar por columnas. Del comando anterior seria PID's (pid del proceso), PPID's (pid del proceso padre), nombre del comando o proceso (cmd) y el uso, en porcentaje, de la memoria RAM y CPU (%mem, %cpu). El parámetro -e devuelve todos los procesos.

Ademas, se utiliza el parámetro --sort para ordenar la salida, en este caso por CPU. Por defecto, ordena de forma ascendente, pero si desean el orden descendente solo se agrega el símbolo menos al inicio.

Si se desea agregar otros campos en la salida, o cambiar el orden por otro campo, pueden revisar el manual del comando ps (man ps).

En resumen


El monitoreo de procesos es una de las numerosas tareas que un administrador de sistemas Linux hace. En este articulo observamos listar los procesos y ordenarlos acorde a la memoria RAM y CPU usado, utilizando el comando ps.

Esperando les sea de utilidad, nos vemos en la próxima publicación. Saludo

domingo, 31 de mayo de 2015

Como leer/visualizar archivos utmp, wtmp y btmp en Linux

Lectores, les paso este "Como" de linux, algo que debe ser usado por cualquier sysadmin de Linux. Esperando aportar conocimiento, aqui les dejo.

Introducción.


En sistemas operativos Linux/Unix todo es registrado en algun lado (los conocidos logs). La mayoria de registros del sistema se almacenan en el directorio /var/log. El directorio contiene registros relacionados a distintos servicios y/o aplicaciones.

En este directorio tenemos algunos archivos como utmp, wtmp y btmp. Estos archivos contienen todo el detalle de registro de inicio (login) y termino (logout) de sesiones de usuarios ya sea local, sistemas remoto, como estado en el sistema, tiempo en linea, etc.

Informacion sobre los archivos


  • utmp: te mostrara informacion completa del acceso de usuarios, la terminal que usa, termino de sesion, eventos del sistema y el estado actual del mismo, etc.
  • wtmp: contiene el historio del archivo utmp
  • btmp: registros solo intentos fallidos de sesion.


Como no revisar

Normalmente, cuando intentamos visualizar el contenido de estos archivos con el comando cat o el editor vi(m), estos muestran datos ilegibles, valores "basura", formato hexadecimal o encriptado. Esto se puede ver al intentar visualizar:

uribes@localhost:~$ cat /var/log/wtmp
&
pts/1/1uribes:0.0 AkU��
                       pts/2/2root:0.0�Akpts/1/1uribes�AkUpts/2/2root BkU�8&
pts/1/1uribes:0.0�BkU�&
pts/3/3uribes:0.07JkU�pts/3/3uribesSJkU�m
pts/1/1uribesWJkU�7 &
pts/1/1uribes:0.0�NkUIpts/1/1uribes;RkU�=�xpts/1/1uribes:0.0>RkU�
&ts/1/1uribesGRkU  

Como revisar

Para leer estos archivos es necesario utilizar el comando last. El comando last es uno de los comandos importantes que te indicara los registros de sesion, cuando se registraron y finalizaron, la terminal, etc. Esto sale en mi equipo:

uribes@localhost:~$ last
uribes   pts/1        :0.0             Sun May 31 12:52   still logged in   
uribes   pts/1        :0.0             Sun May 31 12:26 - 12:26  (00:00)    
uribes   pts/1        :0.0             Sun May 31 12:10 - 12:26  (00:15)    
uribes   pts/3        :0.0             Sun May 31 11:51 - 11:52  (00:00)    
uribes   pts/1        :0.0             Sun May 31 11:20 - 11:52  (00:32)    
root     pts/2        :0.0             Sun May 31 11:16 - 11:16  (00:00)    
uribes   pts/1        :0.0             Sun May 31 11:12 - 11:16  (00:03)    

wtmp begins Sun May 31 11:12:59 2015

Como ven, muestra el detalle de actividad de registro/termino. Este mismo comando puede ser utilizado para leer los archivos utmp, wtmp y btmp. Para esto podemos ejecutar de la siguiente forma:

uribes@localhost:~$ last -f /var/log/wtmp
uribes   pts/1        :0.0             Sun May 31 12:52   still logged in   
uribes   pts/1        :0.0             Sun May 31 12:26 - 12:26  (00:00)    
uribes   pts/1        :0.0             Sun May 31 12:10 - 12:26  (00:15)    
uribes   pts/3        :0.0             Sun May 31 11:51 - 11:52  (00:00)    
uribes   pts/1        :0.0             Sun May 31 11:20 - 11:52  (00:32)    
root     pts/2        :0.0             Sun May 31 11:16 - 11:16  (00:00)    
uribes   pts/1        :0.0             Sun May 31 11:12 - 11:16  (00:03)    

wtmp begins Sun May 31 11:12:59 2015

El parametro de -f de last es para indicarle el archivo que deseamos leer. Existen otros parametros utiles para la visualizacion. Te recomiendo revisar el manual del comando last(1).

Es asi como podemos visualizar el contenido y poder ver quiene esta, cuanto tiempo, que terminal, etc. Si bien es posible ejecutar el comando w, que tambien muestra informacion de quien esta en linea y desde que terminal/ip, no esta de mas revisar otros registros.

Esto seria todo, se vale comentar. Saludos.


viernes, 22 de mayo de 2015

Como montar particiones LVM en Linux

Como están lectores, reportandome después de varios meses fuera.
Hace un par de días vi un howto que me gusto y quiero compartir.

Nota: lo siguiente es una traducción, el original lo pueden ver el siguiente link: How to mount an LVM partition on Linux

Introducción


LVM es una herramienta de administración de volúmenes lógicos (particiones) la cual te permite administrar el espacio de disco usando la connotación de volúmenes lógicos y grupo de volúmenes.

El mayor beneficio de usar LVM sobre las particiones clásicas es la flexibilidad en la asignación de almacenamiento para usuarios y aplicaciones sin verse limitado por el tamaño de los discos individuales.

En LVM, el almacenamiento físico, en el cual se crean los volúmenes lógicos, son particiones tradicionales (/dev/sda1, /dev/sda2). Estas particiones deben ser marcadas como "volúmenes físicos" y etiquetadas como "Linux LVM", esto para ser usadas en LVM.

Como no montar


Unas vez que las particiones han sido etiquetadas como volúmenes LVM, no las puedes montar directamente con el comando mount.

Si intentas montar una partición LVM con mount (ej. /dev/sda2), obtendrás el siguiente error:

mount: unknown filesystem type 'LVM2_member'


Como si montar


Revisando particiones


Si quieres montar una partición LVM de manera apropiada, en su lugar debes montar las particiones lógicas que se encuentran dentro de la LVM. Esta seria la forma como se debe:

Buscar la lista de grupo volúmenes disponibles ejecutando:

$ sudo pvs

 PV         VG                           Fmt  Attr PSize   PFree
  /dev/sdb2  vg_ezsetupsystem40a8f02fadd0 lvm2 a--  237.60g    0 

El nombre de los volúmenes físicos disponibles y de los grupos de volúmenes esta listados bajo las columnas PV y VG respectivamente. En este ejemplo hay un solo grupo de volumen llamado vg_ezsetupsystem40a8f02fadd0 creado en /dev/sdb2.

Bien, revisemos que volúmenes lógicos que existen dentro de el grupo de volumen. Para esto usamos el comando lvdisplay.

 $ sudo lvdisplay <volume-group-name>

Volúmenes Lógicos


Ejecutando lvdisplay nos mostrara informacion sobre el/los volumen(es) lógico(s), como se muestra a continuación.

$ sudo lvdisplay /dev/vg_ezsetupsystem40a8f02fadd0 
 --- Logical volume ---
  LV Path                /dev/vg_ezsetupsystem40a8f02fadd0/lv_root
  LV Name                lv_root
  VG Name                vg_ezsetupsystem40a8f02fadd0
  LV UUID                imygta-P2rv-2SMU-5ugQ-g99D-A0Cb-m31eet
  LV Write Access        read/write
  LV Creation host, time livecd.centos, 2015-03-16 18:38:18 -0400
  LV Status              available
  # open                 0
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

Montando Volúmenes Lógicos 


Si quieres montar un volumen lógico en particular, utiliza su nombre de dispositivo mostrado en "LV Name" (ej. /dev/vg_ezsetupsystem40a8f02fadd0/lv_home) como sigue:

$ sudo mount /dev/vg_ezsetupsystem40a8f02fadd0/lv_home /mnt 

Puedes revisar el estado del montaje ejecutando el comando mount sin argumentos, el cual mostrara una lista de los sistemas de archivos montados.

Validando


$ mount 

Ahorrando tiempo


Si deseas montar los volúmenes lógicos de manera automática al arrancar linux, agrega las siguientes lineas en el archivo /etc/fstab. Necesitaras especificar el tipo de sistema de archivos (ej EXT4) del volumen, del cual puedes ver en la salida del comando anterior

/dev/vg_ezsetupsystem40a8f02fadd0/lv_home /mnt ext4 defaults 0 0
Ahora el volumen lógica se montara automático en /mnt al arrancar linux.


Esperando les sirva como a mi. Nos leemos en el próximo post.
Saludos


miércoles, 11 de marzo de 2015

Linux Liberation

Quiero contribuir con mi grano de arena

Aun falta mucho por hacer, pero se ha recorrido mucho.