jueves, enero 19, 2006

Borrar todos los archivos *.xxx de toda una rama de directorios

Esta línea para Unix buscará y pedirá confirmación para borrar todos los archivos *.xxx que encuentre a partir del path indicado, buscando en carpetas y subcarpetas:

find /some/path -name \*.xxx -ok rm {} \;

miércoles, enero 18, 2006

Ganando un poco de rendimiento en los accesos a disco

En linux, por defecto con el filesystem ext3 se escribirá en disco información de cuándo se accedió por última vez a un archivo. Podemos desactivar esto para ganar eficiencia ahorrándonos escrituras cuando sólo queremos leer.

A?adiremos el atributo 'noatime' a las particiones que queramos en /etc/fstab

# nano /etc/fstab

LABEL=/ / ext3 defaults,usrquota,grpquota,noatime 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
LABEL=/home /home ext3 defaults,usrquota,grpquota,noatime 1 2
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
LABEL=/tmp /tmp ext3 defaults,noatime 1 2
LABEL=/usr /usr ext3 defaults,noatime 1 2
LABEL=/var /var ext3 defaults,usrquota,grpquota,noatime 1 2
LABEL=SWAP-sdb2 swap swap defaults 0 0

No hace falta reiniciar para que los cambios surtan efecto. Si hemos a?adido 'noatime' en / /home /var /usr y /tmp, pondremos:

# mount -oremount /
# mount -oremount /home
# mount -oremount /var
# mount -oremount /usr
# mount -oremount /tmp

Y para comprobar que está todo ok vemos el estado actual de los mount con este comando:

# cat /proc/mounts

martes, enero 17, 2006

PHP sobre Linux y AMD Opteron64

Andaba yo montando un servidor web sobre un AMD Opteron64...

Para ver que todo estaba OK con respecto al PHP, pruebo a sacar la versión de PHP y escupe errores:

# php -v
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/ldap.so' - /usr/lib/php4/ldap.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/mysql.so' - /usr/lib/php4/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Parece que no encuentra esas librerías, así que intento ver dónde están realmete.

# locate ldap.so
warning: locate: could not open database: /var/lib/slocate/slocate.db: No such file or directory
warning: You need to run the 'updatedb' command (as root) to create the database.
Please have a look at /etc/updatedb.conf to enable the daily cron job.

Hay hacer primero un 'updatedb' para poder usar 'locate'

# updatedb

Y repetimos...

# locate ldap.so
/usr/lib64/libnss_ldap.so
/usr/lib64/autofs/lookup_ldap.so
/usr/lib64/libuser/libuser_ldap.so
*** /usr/lib64/php4/ldap.so ***
/lib64/security/pam_ldap.so
/lib64/libnss_ldap.so.2

Vaya por dios, hemos instalado la versión 64 bits del sistema operativo, para aprovechar el Opteron, así que es /usr/lib64/php4 y no /usr/lib/php4

Actualizamos /etc/php.ini

# nano /etc/php.ini

Y cambiamos:

; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/lib/php4"

por:

extension_dir = "/usr/lib64/php4"

Y ahora ya funciona bien si hacemos:

# php -v