Linux: Ver que proceso esta bloqueando algún archivo

Estos comandos nos puede ayudar para conocer cual proceso esta bloqueando nuestro archivo, para posteriormente matarlo con un kill -9 PROCESO

el primero es fuser -v ARCHIVO, un ejemplo tipico de bloqueo es cuando tenemos el error

debconf: DbDriver “config”: /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable

#fuser -v /var/cache/debconf/config.dat

USER PID ACCESS COMMAND /var/cache/debconf/config.dat:
root 1846 F…. frontend

Lo que nos interesa es la parte del PID, o tambien tenemos este otro comando lsof ARCHIVO

#lsof /var/cache/debconf/config.dat

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
frontend 1846 root 4uW REG 8,3 48329 24036395 /var/cache/debconf/config.dat

De igual manera nos interesa el PID, en este caso 1846, y ahora si.., a eliminar el proceso latoso: kill -9 1846

Apt: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf)

Después de ejecutar un apt-get update, al procesar las listas de cambios y realizar la unión de todos los archivos, me aparece el siguiente error.

Reading package lists… Error!
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf)
E: Error occurred while processing postgresql-pltcl-8.4 (NewPackage)
E: Problem with MergeList /var/lib/apt/lists/s2plmirror01.prod.sdl2.secureserver.net_ubuntu_dists_lucid_universe_binary-i386_Packages
W: Unable to munmap
E: The package lists or status file could not be parsed or opened.

Al parecer tiene una limitante la cache de APT a 25165824, la solución obvia es aumentar ese tamaño.., pero la pregunta del millón!! en donde???…, pues solo tenemos que editar el archivo: /etc/apt/apt.conf.d/70debconf y agregar la siguiente linea:

APT::Cache-Limit “100000000”;

Y listo!!…, el valor pues puede ser cualquiera mas alto a el del error, pero con ese número se soluciona 🙂

Ahora si.. ,procedemos a limpiar la cache y recargar la lista: apt-get clean && apt-get update –fix-missing

Postfix: temporary failure. Command output: /usr/bin/maildrop: Unable to create a dot-lock

De repente el servidor de correos que se configuro con ISPConfig 3, no enviaba correos cuando se trata de mails configurados con “reenvío de correo.” (Email forward)

Me daba el siguiente error en /var/log/mail.log

Feb 12 15:25:17 oviedo.mx postfix/pipe[30549]: DDE86158187: to=, relay=maildrop, delay=4356, delays=4356/0.05/0/0.1, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/bin/maildrop: Unable to create a dot-lock at /var/vmail/oviedo.mx/usuario/3055320.0.oviedo.mx. )

Ademas anteriormente me daba problemas con el puerto 10024, me decia que conexion rechazada:

Feb 10 16:13:28 oviedo.mx postfix/smtp[14558]: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused

Entonces para solucionar el problema del puerto 10024, era desactivar el antivirus amavis, entonces en el archivo de configuración de postfix main.cf /etc/postfix/main.cf procedemos a comentar la línea donde aparezca algo así:

#content_filter = amavis:[127.0.0.1]:10024

Reiniciamos postfix /etc/init.d/postfix restart y tratamos de enviar un email de los configurados para forward y pues me sigue dando el error inicial del maildrop.

Investigando un poco me doy cuenta que al comentar la línea de content_filter del anti-virus amavis, tambien se debe de comentar la línea donde dice: receive_override_options entonces el archivo main.cf nos quedará de la siguiente manera:

#content_filter = amavis:[127.0.0.1]:10024
#receive_override_options = no_address_mappings

Y listo!, reiniciamos otra vez postfix y a probar. Por lo menos a mi me funciono así como les he dicho.

Apt-get: Problem with MergeList en /var/lib/apt/lists/

Si Ubuntu o Debian les arroja el siguiente error, o algo similar que diga problemas con MergeList.

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/ ftp.utexas.edu_ubuntu_dists_quantal_main_i18n_Translation-en
E: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado.

La solución es limpiar la lista del APT y volver a actualizar los paquetes, quizas se descargo un paquete corrupto y pues fue el causante de todo el problema, entonces como ejecutar los siguientes comandos con los superpoderes de sudo.

sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update

Y listo!!! asunto arreglado no más errores que no se encuentra en encabezado de los paquetes ni que no puede hacer la combinación de las listas de apt.

XAMPP no inicia el servicio Apache

Me cambie de Appserv (que tengo años usandolo) a Xampp en la computadora con Windows, ya que necesito la ultima versión estable de PHP, pero tenía un problema al iniciar el servicio de apache, xampp me indicaba que no podia usarlo porque el puerto 80 esta ocupado.

Si escribia localhost en el navegador + firebug para ver el encabezado de la petición HTTP veo la siguiente línea.

Server: Microsoft-HTTPAPI/2.0

Y la página de error:

Not Found

HTTP Error 404. The requested resource is not found.

Lo más raro de todo es que no tengo el IIS instalado, peroooo!! si tengo el SQL Server 2008 R2 que es el que da problemas., aquí la solución para desactivar el servicio que nos da lata.

Microsoft SQL Server 2008 R2 > Configuration Tools > SQL Server Configuration Manager

Una vez dentro del programa SQL Server Configuration Manager, en el menú de la izquierda: SQL Server Services seleccionamos la opción donde aparezca:

SQL Server Reporting Services (MSSQLSERVER) botón derecho y Stop.

Ahora, para que no de lata al momento de reiniciar windows, tenemos que desactivar por completo el inicio automatico del proceso., solo doble click y aparecerá una ventana con pestañas:

Service > Start Mode: Disabled

Aceptar y listo!!.., si no funciona, reiniciamos Windows (para variar)… apache ready!

MySQL y Visual Basic: El proveedor de datos u otro servicio devolvió un estado E_FAIL

Estaba revisando un sistema creado en visual basic 6 y a veces me marcaba el siguiente error:

El proveedor de datos u otro servicio devolvió un estado E_FAIL.

Viendo la consulta SQL me doy cuenta que la constante es que siempre había por lo menos 1 fecha con formato 0000-00-00 o mejor dicho NULL.

Y revisando la estructura de las tablas, el campo estaba definidio como datetime o date pero decía NOT NULL, la solución es poner los campos fecha a NULL, así ya no arrojara el ODBC el error de E_FAIL.

Linux: Contar requests por IP de un access_log de Apache

Para ver el total de peticiones a nuestro servidor apache por dirección IP, podemos ejecutar este comando desde la terminal.

cat /var/log/apache2/access_log |awk ‘{print($1)}’|sort |uniq -c |sort

Y listo, nos dará como resultado 2 columnas, la primera con el total de visitas y la segunda la dirección IP, útil para saber si alguien esta queriendo entrar al sistema indebidamente, aunque por lo general en los primeros lugares con más visitas encontraremos a Google o MSN Search.

PHP: Convertir fecha de Twitter del formato RFC 2822 a uno de MySQL

Pues he estado probando la API de twitter y el campo created_at tiene la fecha en formato RFC 2822, osea en español algo así: Sun, 14 Aug 2005 16:13:03 +0000, el problema esta al guardar la información en la base de datos MySQL, ya que solo acepta formato “YYYY-MM-DD HH:MM:SS” entonces, ocupamos modificar esta información.

la solución esta en utilizar 2 funciones de PHP: strtotime y date

strtotime lo que hace es convertir una descripción de fecha/hora textual en Inglés a una fecha Unix y con comando date le damos el formato que deseemos.

Teniendo algo así.

date(‘Y-m-d H:i:s’,strtotime($json->created_at))

Windows 7: Error explorador de windows dejo de funcionar en el panel de control

Me apacere el mensaje explorador de windows dejo de funcionar cuando abro el panel de control en cualquier opción (Desinstalar un programa, Sistema y Seguridad)

El problema radica con los iconos del panel de control que son incompatibles con windows 7, la cosa es buscar al culpable, dentro de c:/windows/system32 y buscar los que tengan extensión .cpl y ordenar por fecha, e ir cambiando la extensión a .cp- y probar hasta que desaparezca el error.

En mi caso habia instalado Firebird 1.5 y pues el archivo culpable fue: Firebird2Control.cpl

CGROUPS: Aumentar el rendimiento de Linux

Buscando en la red sobre como incrementar el rendimiento de Linux (ubuntu) encontre una página de jEsuSdA en donde habla de un script que nos ayuda a acelerar el procesador y procesos mediante CGROUPS (Grupo de Control)

Bueno las instrucciones son muy simples, y el rendimiento es algo notorio para los que utilizamos mucho la computadora, no olviden que todo como root ( sudo su – )

Editar el archivo /etc/rc.local y antes de exit 0

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo “/usr/local/sbin/cgroup_clean” > /dev/cgroup/cpu/release_agent

exit 0

Despues creamos, editamos el siguiente archivo: /usr/local/sbin/cgroup_clean

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

Y hacemos ejecutables los 2 archivos antes mencionados

chmod +x /etc/rc.local
chmod +x /usr/local/sbin/cgroup_cle

Ahora para que funcione el truco, en cada usuario modificamos el archivo .bashrc que esta en la raiz de nuestra carpeta /home/USUARIO ó /root y al final ponemos:

if [ “$PS1” ] ; then
mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1
echo $$ > /dev/cgroup/cpu/user/$$/tasks
echo “1” > /dev/cgroup/cpu/user/$$/notify_on_release
fi

Y listooo!! para que funcione ejecutamos /etc/rc.local o reiniciamos la computadora si así lo desean.