Rincón Informático

Un rincon para hablar sobre GNU/Linux, seguridad informatica, y mas!!

Monitorear procesos en GNU/Linux

Posted by Epsilon On enero - 19 - 2010

En entornos Unix existen  herramientas para todos los gustos que nos ayudan a monitorear o  administrar procesos,  en esta entrada nombraremos algunas nativas de Unix y otras que no lo son, y que nos sirven para visualizar los procesos del su pid,  y otra informacion importante.

Comando PS

Es un comando muy util y con muchas opciones, para listar los procesos que se estan corriendo en el podemos hacer lo siguiente:

ps -e

ps -A

Con cualquiera de los dos comandos anteriores podemos listar  los procesos con su respectivo PID.  Si deseamos mas informacion como:   el usuario, la carga de cpu y memoria, el tiempo y por supuesto su nombre con la ruta del ejecutable usamos los siguientes parametros :

ps -aux

Ahora si deseamos encontrar un proceso  en especifico podemos usar grep

ps -e | grep guake

Herramienta Top

Existe una herramienta un poco mas interactiva que viene por defecto en todas las  distribuciones de GNU/Linux llamada top, esta aplicacion nos muestra en tiempo real toda la informacion relevante de cada proceso que se esta ejecutando, para lanzarlo solo basta escribir en consola top:

top_procesos

En la imagen vemos claramente alguna informacion importante como:

  • PID
  • USUARIO
  • %CPU
  • %MEMORIA
  • NOMBRE

Herramienta Watsup

Por otra parte si no eres muy amante de la consola, watsup es la herramienta perfecta para ti,  es un monitor de procesos  grafico de codigo abierto (GPL), para descargarlo puedes ir a este enlace para instalarlo debemos seguir estos sencillos pasos:

make
make install

Para ejecutarlo simplemente escribes en una consola watsup  o tecleas alt+f2 y escribes watsup, inmediatamente nos saldra la pantalla en la cual podemos ver los proceso actuales e incluso matar el que nosotros deesemos:

proceso-watsup

Generalmente algunas personas instalamos diversos servicios que necesitamos en nuestra maquina  como mysql, ftp, ssh, web, entre otros, con diversos fines, ya sea  por  trabajo, curiosidad, conocimiento o lo que sea. Sin embargo, estos servicios cuando se instalan por defecto, se configura de tal forma que siempre se inicien cuando el operativo arranque.  No obstante muchas veces no necesitamos estos servicios y lo único que hacen es consumir memoria  y cpu. Existe un paquete en los repositorios llamado chkconfig el cual nos ayuda a configurar el inicio del , es decir,  gestionar que servicios  deseamos que se levanten al momento en el que se inicia nuestro GNU/Linux. Recordemos que  es bueno desactivar los servicios que no se van a utilizar  no solo por rendimiento sino por seguridad de nuestra información. Para instalar  el paquete chkconfig hacemos uso del comando mágico:

apt-get install chkconfig

Algunas opciones son:

  • -l Lista todos los servicios.
  • -a agrega un servicio al inicio.
  • -d elimina un servicio al inicio.
  • -e edita el servicio deseado.
  • Para ver con mas detalle puede revisar el manual que trae el comando.

Por ejemplo si quisieramos que mysql no se ejecutara al inicio  haríamos esto en una consola como root:

chkconfig -d mysql

Y si por el contrario quisieramos agregar a un servicio como ssh al inicio del :

chkconfig -a ssh

Como ven es muy sencillo gestionar los servicios en GNU/Linux,  existe una herramienta que hace lo mismo  que chkconfig pero de forma gráfica, se trata de bootup-manager o mas conocida como bum, esta herramienta se encuentra en los repositorios, se instala y simplemente se seleccionan los servicios que se arrancaran al inicio.

apt-get install bum

startup-manager

Desinstalando ESET NOD32 EN GNU/Linux

Posted by Epsilon On enero - 17 - 2010

Despues de unas merecidas vacaciones (mil disculpas a todos los fieles lectores), arrancamos el año con muchas ganas de trabajar y de compartir el conocimiento que vamos adquiriendo  poco a poco en nuestras experiencias como informaticos.

En el dia de hoy mostraremos como  desinstalar el antivirus ESET NOD32 en GNU/Linux  del cual ya habiamos hablado anteriormente en rincon informatico, debido a que  muchos usuarios (y me incluyo) despues de instalarlo y probarlo determinaron que este software no cumplia con todas sus expectivas. por varias razones entre las que tenemos:

  • Problema con usuario
  • Demasiada  carga para el .
  • Cuelgues repentinos.
  • Y algunos problemas mas..

Para desintalar este  programa debemos tener a mano  el binario de instalacion(si ese que descargaron de este enlace) darle permisos si  ya no lo habian hecho y  ejecutarlo nuevamente asi:

chmod 777 ueav.i386.linux
./ueav.i386.linux

Despues  de ejecutarlo saldra una pantalla de instalacion, damos click en siguiente,  y aqui es donde debemos seleccionar la opcion de desintalar  el programa de esta forma:

desinstalar nod32

Y eso es todo, como pueden ver es similar a como se desinstalan algunos programas en Windows

Como dividir un archivo de texto demasiado grande

Posted by Epsilon On enero - 11 - 2010

Algunas veces resulta muy molesto trabajar con archivos  de texto  demasiado grandes, ya que para visualizarlos el debe cargar  el archivo completo en la memoria de nuestra maquina,  si estamos trabajando con archivos  de 10 millones de lineas en adelante,  al abrirlo este consumira demasiada memoria y hará que nuestro colapse por completo.

Para solucionar este incomodo problema, los entornos unix traen una utilidad llamada split, la cual nos ayuda como su nombre lo indica a dividir o partir un archivo de texto el cual sea demasiado grande.

La sintaxis de split es:

split [parámetros opcionales] [archivo de entrada] [archivo de salida]

Entre los parámetros tenemos:

  • -l -> numero de lineas en las que se va a dividir o partir el archivo por defecto son 1000
  • -b -> divide el archivo no por lineas, sino por tamaño (expresado en bits)
  • -b k n -> divide el archivo no por lineas, sino por tamaño (donde n es un multiplo de 1024 bytes)

Después de los parámetros,  le damos el archivo de entrada y un nombre de salida,  hay que aclarar que el archivo de salida tendrá la siguiente notación:

nombrea nombreb nombrec nombred nombree nombref etc……

Algunos ejemplos:

split -l 5000 diccionario.txt parte-

Esta sentencia me arrojara  lo siguiente:

parte-a parte-b parte-c  hasta que el archivo quede completamente dividido-

Algo muy sencillo pero util,  trabajar con backups o archivos de textos que este en el orden de los millones. Por ultimo si alguien posteriormente desea  pegar las partes lo puede hacer muy facilmente usando cat.

cat parte-a parte-b parte-c > todocompleto.txt

Optimizando el servidor Mysql

Posted by Epsilon On enero - 9 - 2010

Trabajando en un proyecto personal (que pronto les contare en que consiste),  me surgió la necesidad de optimizar al máximo el servidor MySQL, es decir, necesitaba configurar el servidor MySQL  de una forma adecuada para que soportara todo el trabajo necesario.  Navegando en la red, me encontré con este articulo,  en el cual nos comparten una configuración óptima para nuestro servidor  MySQL (lo que estábamos buscando).  Implemente este archivo de configuración,  y desde ese momento mi servidor ha mejorado en cuanto a rendimiento, disponibilidad y eficiencia.

Por esta razón comparto el archivo de configuración por si  alguno tiene el mismo problema, en este archivo se hacen modificaciones principalmente, en el tamaño de la memoria,  conexiones concurrentes y otros aspectos:

[mysqld]
 socket=/path/to/mysql.sock
 datadir=/var/lib/mysql
 skip-locking
 skip-innodb
 # MySQL 4.x has query caching available.
 # Enable it for vast improvement and it may be all you need to tweak.
 query_cache_type=1
 query_cache_limit=1M
 query_cache_size=32M
 # max_connections=500
 # Reduced to 200 as memory will not be enough for 500 connections.
 # memory=key_buffer+(sort_buffer_size+read_buffer_size)*max_connections
 # which is now: 64 + (1 + 1) * 200 = 464 MB
 # max_connections = approx. MaxClients setting in httpd.conf file
 # Default set to 100.
 #max_connections=200
 #interactive_timeout=180
 interactive_timeout=100
 #wait_timeout=180
 #wait_timeout=100
 # Reduced wait_timeout to prevent idle clients holding connections.
 #wait_timeout=30
 wait_timeout=15
 connect_timeout=10
 # max_connect_errors is set to 10 by default
 #max_connect_errors=10
 #table_cache=256
 #table_cache=1024
 # Checked opened tables and adjusted accordingly after running for a while.
 table_cache=512
 #tmp_table_size=32M by default
 #thread_cache=128
 # Reduced it to 32 to prevent memory hogging. Also, see notes below.
 thread_cache=32
 # key_buffer=258M
 # Reduced it by checking current size of *.MYI files, see notes below.
 key_buffer=128M
 # Commented out the buffer sizes and keeping the default.
 # sort_buffer_size=2M by default.
 #sort_buffer_size=1M
 # read_buffer_size=128K by default.
 #read_buffer_size=1M
 # read_rnd_buffer_size=256K by default.
 #read_rnd_buffer_size=1M
 # myisam_sort_buffer_size=8M by default.
 #myisam_sort_buffer_size=64M
 # thread_concurrency = 2 * (no. of CPU)
 thread_concurrency=2
 # log slow queries is a must. Many queries that take more than 2 seconds.
 # If so, then your tables need enhancement.
 log_slow_queries=/var/log/mysqld.slow.log
 long_query_time=2
 [mysql.server]
 user=mysql
 basedir=/var/lib
 [safe_mysqld]
 err-log=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid
 open_files_limit=8192

[mysqldump]
 quick
 max_allowed_packet=16M
 [mysql]
 no-auto-rehash
 # Remove the next comment character if you are not familiar with SQL
 #safe-updates
 [isamchk]
 key_buffer=64M
 sort_buffer=64M
 read_buffer=16M
 write_buffer=16M
 [myisamchk]
 key_buffer=64M
 sort_buffer=64M
 read_buffer=16M
 write_buffer=16M
 [mysqlhotcopy]
 interactive-timeout 
 [client]
 socket=/path/to/mysql.sock

Para  aplicar esta configuración,  lo podemos hacer de varias formas:

  • Abrimos el archivo /etc/mysql/my.cnf borramos todo su contenido y por ultimo pegamos el contenido de esta configuracion. ( No sobra decir que debemos guardar).
  • Por otro lado  podemos borrar el archivo /etc/mysql/my.cnf, descargamos el nuevo archivo desde aca y lo copiamos en la misma ubicacion.

nota: cabe aclarar que no soy un experto en el tema, simplemente doy mis comentarios apartir de la experiencia que tuve usando esta configuracion,   si alguien tiene un archivo my.cnf mas optimizado seria esplendido que lo compartiera con todos nosotros

Para mas informacion pueden ir a este enlace

Como corregir inconsistencias en el sistema de archivos con FSCK

Posted by jhonber On diciembre - 26 - 2009

Qué es FSCK (En Wikipedia):

FSCK (file system check o bien file system consistency check) es una utilidad de los sistemas Unix y similares, como Linux y AIX que se utiliza ante alguna inconsistencia del de archivos para corregir los posibles errores en el .

FSCK se ejecuta automáticamente al arranque del , si se encuentra alguna anomalía en el mismo; pero además de eso puede ser usado manualmente.

Modo de empleo:

fsck  [-opciones]  /dev/hdXXX  (o sdXXX)

Opciones:

-a confirmar automáticamente. No recomendado.
-c comprobar bloques en el disco.
-f forzar la verificación aunque todo parezca normal.
-v (verbose) despliega más información.
-r Modo interactivo. Espera nuestra respuesta.
-y asume yes de respuesta.

El siguiente argumento para el comando FSCK es la partición donde queremos hacer la verificación. (Depende de nuestro disco lo haremos con  /dev/hdXXX  o  con /dev/sdXXX ).

Nota: Se recomienda que la partición donde hagamos la verificación se encuentre DESMONTADA.

Un ejemplo de uso puede ser (Con el cual el comando comprobaría los bloques en el disco y asumiría ‘yes’ como respuesta):

# fsck  -c  -y  /dev/hdXXX

La salida de dicho comando serán algunos avisos sobre si se han encontrado errores en el de archivos y si se han corregido correctamente.

Automatizar FSCK para que se ejecute al arranque del

Esto se puede conseguir editando el archivo /etc/fstab

# vim  /etc/fstab

Archivo fstab:

##################################
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/hda6           /                           ext3        defaults           0                1
/dev/hda2           /home                  ext3        defaults           0                2
/dev/hda5          none                     swap      sw                     0                0
/dev/hdb            /media/cdrom0  udf,iso9660 user,noauto    0               0
/dev/hda7          /media/hda7       ext3         defaults             0                2
##################################

Debajo de <pass> es donde debemos colocar el argumento que hará que FSCK verifique cada X arranques del dicha partición, Los valores posibles son “0″  “1″ o “2″ El de fichero raíz / debe tener “1″ si deseamos activarlo, y el resto de particiones deben tener “2″ para el mismo propósito. Los sistemas de ficheros que no necesitan comprobación como swap o el CD-ROM Tendrán el valor de “0″.

Bueno no esta demás recomendar usar con cuidado este comando (Úsalo bajo tu cuenta y riesgo) ;)

Hasta la próxima y Felices Fiestas para todos !!!

Dual Boot en OpenSolaris

Posted by Epsilon On diciembre - 23 - 2009

Para las personas q han instalado opensolaris después de tener instalado un GNU/Linux se han dado cuenta de que el grub de opensolaris no les reconoce por defecto la entrada a el GNU/linux, y pasa lo mismo si tenemos opensolaris y despues instalamos un GNU/linux por que el grub de GNU/Linux  no reconoce ZFS ( de archivos de opensolaris), en esta entrada mostraremos  dos posibles soluciones para resolver este inconveniente, muchos de ustedes se preguntaran ¿y q pasa si tengo windows? pues nada por q opensolaris reconoce la entrada de windows por defecto.

si hemos instalado opensolaris después de GNU/Linux  lo que  podemos hacer es lo siguiente copiamos las entradas del menu.lst del pinguino  y las pegamos en  el archivo  menu.lst del opensolaris q se encuentra en /rpool/boot/grub/menu.lst y debe quedar algo como esto:

splashimage /boot/grub/splash.xpm.gz
timeout 30
default 0
#---------ADED BY BOOTADM - DO NOT EDIT ----------------
title OpenSolaris 2009.06 snv_86_rc3 X86
bootfs rpool/ROOT/opensolaris
kernel$ /plataform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /plataform/i86pc/$ISADIR/boot_archive
#--------------------END BOOTADM-----------------------------------
title Windows asi reconoce el opensolaris la entrada de windows.
rootnoverify (hd0,0)
chainloader +1
#Unknown partition of type 5 found on /dev/rdsk/c5d0p0 partition: 2
# It maps to the GRUB device: (hd0,1).
title Ubuntu 8.04, kernel 2.6.24-16-generic
root (hd0,4)
kernel /boot/vmlinuz-2.6.24-16-generic
root=UUID=26393121-0c4a-4081-8363-89e928184a10 ro quiet splash
initrd /boot/initrd.img-2.6.24-16-generic
quiet
title Ubuntu 8.04, kernel 2.6.24-16-generic (recovery mode)
root (hd0,4)
kernel /boot/vmlinuz-2.6.24-16-generic
root=UUID=26393121-0c4a-4081-8363-89e928184a10 ro single
initrd /boot/initrd.img-2.6.24-16-generic
title Ubuntu 8.04, memtest86+
root (hd0,4)
kernel /boot/memtest86+.bin
quiet
##END DEBIAN AUTOMATIC KERNELS LIST

si esta opcion no les funciona por alguna razon, pueden probar  recuperando el grub del GNU/Linux con el super grub disk y despues de esto  vamos al menu.lst del linux que esta ubicando en /boot/grub/menu.lst y copiamos al de la linea lo siguiente:

title OpenSolaris
rootnoverify (hd0,1)
makeactive
chainloader +1

Siendo el (hdx,y) la parcticion en donde esta ubicado el opensolaris debe quedar algo asi:

title Ubuntu 8.04, kernel 2.6.24-16-generic
 root (hd0,4)
 kernel /boot/vmlinuz-2.6.24-16-generic
 root=UUID=26393121-0c4a-4081-8363-89e928184a10 ro quiet splash
 initrd /boot/initrd.img-2.6.24-16-generic
 quiet

 title Ubuntu 8.04, kernel 2.6.24-16-generic (recovery mode)
 root (hd0,4)
 kernel /boot/vmlinuz-2.6.24-16-generic
 root=UUID=26393121-0c4a-4081-8363-89e928184a10 ro single
 initrd /boot/initrd.img-2.6.24-16-generic

 title Ubuntu 8.04, memtest86+
 root (hd0,4)
 kernel /boot/memtest86+.bin
 quiet

 ##END DEBIAN AUTOMATIC KERNELS LIST

 title OpenSolaris
 rootnoverify (hd0,1)
 makeactive
 chainloader +1