2012-02-09 6 views
13

Tengo más de 5 millones de archivos de sesión en /var/lib/php5 Me gustaría eliminar todos los archivos en esta carpeta usando rm *, sin embargo, no estoy seguro si hay otros archivos además de los archivos de sesión en ese directorio que no deberían eliminarse.¿Puedo eliminar de forma segura todo el contenido en/var/lib/php5?

A través de SSH me tomó unos minutos hacer que el archivo cuente y no estoy seguro de poder navegar por allí con todos estos nombres de archivo aleatorios. La configuración es ubuntu lúxica linx, apache 2 y php5. En la configuración más común ¿hay otras carpetas/archivos en /var/lib/php5 que no debería eliminar?

Editar La razón por la que quiero eliminar los archivos es porque moví el manejo de sesión a una base de datos y ya no necesito ninguno de los archivos.

Respuesta

13

Deje que PHP gc realice la limpieza por sí mismo. Busque php.ini y cambie session.gc_probability a algo más grande, guárdelo y reinicie Apache (llame a cualquier script php). Aquí dice http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

En Debian y Ubuntu,/var/lib/php5, donde se almacena los datos de sesión, tiene permisos de drwx-WX-peso y sólo debe ser limpiado por un script cronológico. Por lo tanto, los mantenedores del paquete deshabilitan la recolección automática de basura de la sesión .

O usted podría tratar de poner ini_set('session.gc_probability', 100); session_start(); (si su session.gc_divisor es igual a 100) en una de las secuencias de comandos y llamarlo. La mejor manera es colocar el archivo php vacío, ya que podría realizar una limpieza durante un período de tiempo muy largo.

ps: También trataría de dejar session.gc_probability 1 y configurar session.gc_divisor en 1. Debería llamar a gc en cada ejecución, pero lo necesita solo para una limpieza de directorio.

Y compruebe su cron /etc/cron.d/php5 - debe ejecutarse cada media hora para purgar los archivos de sesión en el directorio/var/lib/php5 /.

pps: encontraron interesante comentario

Esto no desactivarlo (se comenta fuera). Todavía se usa el valor predeterminado dentro del motor - phpinfo() muestra el valor 1. Hay un problema con la recolección de basura en Debian (y por lo tanto Ubuntu) pero eso es debido a que PHP quiere eliminar la basura que ya ha sido eliminada por la secuencia de comandos cron. Esto provoca un error que puede aparecer en la página desafortunada .

+0

¿Cambiar estas configuraciones eliminará todos los archivos de sesión anteriores? De hecho, solo quiero deshacerme de todos los archivos lo antes posible, sin embargo, la duración de la sesión se establece en 2 semanas. – Moak

+0

@Moca sí, eliminará los datos obsoletos. También podría cambiar la fecha límite para la ejecución de limpieza. Por cierto, ¿tiene alguna parte específica en el nombre del archivo de sesión? podrías filtrar por ella si quieres. De todos modos, revisa el trabajo cron y ejecútalo. – Cheery

+0

En mi caso (SuSE 11.2) no funcionó al principio. Descubrí que los cambios en 'php.ini' se aplican cuando emití' rcapache2 reload'. – Paramaeleon

23
cd /var/lib/php5 
find . -name "sess_*" -print | xargs rm -v 
+1

¿Por qué no simplemente 'rm -v/var/lib/php5/sess_ *'? –

+13

Porque con una cantidad obscenamente grande de archivos, 'rm' se cerrará prematuramente con un error de" Lista de argumentos demasiado larga ", y no borrará ningún archivo. Encontrar los archivos usando 'find' y canalizando los resultados uno por uno para' xargs' pasos alrededor de esta limitación. [Más información] (http://www.moundalexis.com/archives/000035.php) –

0
cd /var/lib/php5 
sudo find . -name "sess_*" -print |sudo xargs rm -v 

Esto ha funcionado en mi caso.

0

En mi ordenador ubuntu, en/var/lib/php5, hay un archivo de ID sess: sess_a7kjdaojmneuhcgslj

Si tratara de eliminar este archivo usando el comando:

sudo rm sess_a7 *

Aparece un mensaje de error que dice que no hay tal archivo.Tuve que usar el nombre completo como:

sess_a7kjdaojmneuhcgslj sudo rm

Funcionó. Este es mi dos centavos.

Cuestiones relacionadas