Ciclo Herramientas gnu/linux (I): htop

Comienzo un ciclo a petición de un compañero, herramientas habituales.
En este caso, un must-have de todo linuxero y más si eres sysadm.
El htop es el top clásico llevado al nivel “no podrás vivir sin el”, es el típico “estaba ciego y acabo de despertar”.
Colourfull, easy, full-customizable…
Ya he puesto alguna captura en ocasiones:
Consumo de memoria

Echemos un vistazo al help (F1/h):
[cc lang=”bash”]htop 0.8.3 – (C) 2004-2008 Hisham Muhammad.
Released under the GNU GPL. See ‘man’ page for more info.

CPU usage bar: [low-priority/normal/kernel used%]
Memory bar: [used/buffers/cache used/total]
Swap bar: [used used/total]
Type and layout of header meters are configurable in the setup screen.

Status: R: running; S: sleeping; T: traced/stopped; Z: zombie; D: disk sleep
Arrows: scroll process list F5 t: tree view
Digits: incremental PID search u: show processes of a single user
F3 /: incremental name search H: hide/show user threads
K: hide/show kernel threads
Space: tag processes F: cursor follows process
U: untag all processes
F9 k: kill process/tagged processes P: sort by CPU%
+ [ F7: higher priority (root only) M: sort by MEM%
– ] F8: lower priority (+ nice) T: sort by TIME
F4 I: invert sort order
F2 S: setup F6 >: select sort column
F1 h: show this help screen l: list open files with lsof
F10 q: quit s: trace syscalls with strace
L: trace library calls with ltrace

Press any key to return. [/cc]
A simple vista… un top… normal.
Ahora bien… si rascamos un poco:

  • Scrolling: Efectivamente, htop permite scrolling por la lista de procesos, select&go: renice, kill…
  • Búsqueda por procesos (F3 & /)
  • Tree view
  • Setup: permite una personalización completa del entorno htop.
  • strace: lanza un strace atachado al proceso seleccionado
  • lsof: lista ficheros abiertos por el proceso seleccionado

Merecería la pena solo por ver top en colores, pero cosas como strace, lsof y ver “gráficamente” las cosas, no tiene precio :P

CH3HNAS: cambiando puntos de montaje

A vueltas con el NAS, no he encontrado la manera de cambiar los puntos de montaje por defecto para los discos duros.
Y la verdad, no me gustaba la idea de tener el 2º disco en “/home/Disk_2”, asi que aprovechando el sistema “funplug”, he decido añadir un script propio para montar en durante el boot el 2º disco donde yo quiero.

El script es el siguiente:
[cc lang=”bash” theme=”blackboard”]
#!/bin/sh
# EXIT CODES:
# 0 OK
# 1 MOUNT FAIL
# 2 UMOUNT FAIL
# 99 undefined error

DISK2=”/home/Disk_2″
DEVICE2=”/dev/sdb1″
MYMOUNT=”/home/Public/mountpoint”
# check if mounted
checkmounted()
{
# returns: 0 umounted, 1 wrong, 2 OK
local MOUNTED=”$(df | grep “^$DEVICE2″)”
if [[ “$MOUNTED” ]]
then
if [[ “$(echo $MOUNTED | grep $MYMOUNT)” ]]
then
return 2
else
return 1
fi
else
return 0
fi
}
# mount
mount_it()
{
mount $DEVICE2 $MYMOUNT
sleep 2
checkmounted
AUX=$?
if [ $AUX -ne 2 ]
then
echo “FAIL mounting”
exit 1
fi
}
# umount
umount_it()
{
umount -lf $DISK2
sleep 2
checkmounted
AUX=$?
if [ $AUX -ne 0 ]
then
echo “FAIL umouting”
exit 2
fi
}
# check again

main()
{
checkmounted
AUX=$?
case $AUX in
0)
mount_it
;;
1)
umount_it
mount_it
exit 0
;;
2)
echo “OK”
exit 0
;;
*)
echo “FAIL STATUS”
exit 99
;;
esac
}
main
[/cc]

Como véis, únicamente compruebo que está montada (variable $DISK2), desmonto y monto en el sitio que yo quiero (variable $MYMOUNT).

New adventures with CH3HNAS

Hi folks!
Following with my CH3HNAS adventures, I’ve decided to build my own cross-compiling environment based on the wonderful instructions from Henk-Jan.
To avoid unexpected issues on my Arch distro, I’ve created a new VM running debian.
Here I found the 1st issue, there’s no gcc-4.1 on the last debian version, so I setted up lenny’s repos:
[cc lang=”bash” theme=”blackboard”]
cp /etc/apt/sources.list /etc/apt/sources.list.orig
echo “deb http://ftp.us.debian.org/debian/ lenny main contrib non-free” > /etc/apt/sources.list
echo “deb-src http://ftp.us.debian.org/debian/ lenny main contrib non-free” >> /etc/apt/sources.list
apt-get update
apt-get install gcc-4.1 g++-4.1
mv /etc/apt/sources.list /etc/apt/sources.list.lenny
cp -fv /etc/apt/sources.list.orig /etc/apt/sources.list
[/cc]
Having the minimal debian distro, “bzip2” is necessary too.

I get an estrange error at the 1st step’s while “making” the build environment:
[cc lang=”bash” theme=”blackboard”]
scripts/unifdef.c:209: error: conflicting types for ‘getline’
/usr/include/stdio.h:XXX: note: previous declaration of ‘getline’ was here
[/cc]
I was running crazy with that till I found this simply solution.
The problem is that if you want to use the “Makefile” provided, the kernel source is bzip’ed, so callme fool, but I bunzipped/bziped again with the patch inside :)
[cc lang=”bash” theme=”blackboard”]
cd OXNAS810/src/rootfs/buildroot/../buildroot-archives/
tar xjfv linux-2.6.24.7.tar.bz2
sed -i “s/getline/uc_&/” ./linux-2.6.24.7/scripts/unifdef.c
mv linux-2.6.24.7.tar.bz2 linux-2.6.24.7.tar.bz2.orig
tar cjfv linux-2.6.24.7.tar.bz2 linux-2.6.24.7
[/cc]
And then I simply run:
[cc lang=”bash” theme=”blackboard”]
make
[/cc]
To build the environment.

Migración a Arch

Desde hace algún tiempo, en el trabajo me venía planteando el migrar a algo más “hard” (por decirlo así…) había cosas de ubuntu que no me terminaban de convencer.
Por ejemplo, quería usar sí o sí el magnífico CDM y pasar de GDM/KDM, ya que comían memoria en mi portátil ruso con sus pasmosos 2GB de ram.
La cuestión es que en ubuntu no conseguí eliminar GDM y usar correctamente CDM…
Asi que en los ratos libres del “finde” he migrado a Arch.
Después de instalar millones de dependencias, visitar miles de páginas de su maravillosa wiki y siguiendo la página “lightweight” al dedillo, he decir que estoy gratamente sorprendido con el resultado, ya el mayor defecto es su mayor virtud y en este caso la fuerza de la virtud es muy superior: personalización.
Al montar “from scratch” (hasta cierto punto), todo se puede poner “a medida”.

Por supuesto, firefox y flash siguen ocupando el 50% de la memoria, pero el resto va sobrado.
Recomendable 100% a quien quiera algo a medida, eso si, es necesario tener al lado un pc/movil con el que ir leyendo la wiki (o ser el puto amo).

Pam mount

Entre otras cosas estoy experimentando con la tan bien “nombrada” Arch Linux, para otro post mis experiencias.
Hoy recuperando mi home encriptada con LUKS, he probado por primera vez “pam_mount” (desde AUR).
Después de estar pensando qué fallada, me he dado cuenta que no había añadido el módulo a la sección correspondiente de PAM:
[cc lang=”bash” theme=”blackboard”]
vi /etc/pam.d/login
[/cc]
Y, tal como dicen en la documentación oficial, añadir al final:
[cc lang=”bash” theme=”blackboard”]
session optional pam_mount.so
[/cc]

Tal vez sea por que llevo mucho tiempo viviendo feliz en ubuntu (y antes mandriva), pero me sorprende que no lo haga automáticamente… que también está bien, no? ;)
Me ha sorprendido gratamente que se desmonte con el “logout”, recomendado para cualquiera que quiera un poquito más de seguridad :)