Vistas de página en total

martes, 19 de junio de 2012

Resuelve problemas comunes en tu sistema gnu/linux con la ayuda de find y xargs

El poder de Find.

Si anteriormente hable de el comando lsof, hoy le toca a find.
find, es uno de esas poderosas herramientas de Unix/Linux de las que sólo aprovechamos una ínfima parte de su extraordinario poder.

Gran parte de preguntas sobre linux, podrían resolverse con este comando. .
Para sacar provecho de estas herramientas, simplemente es necesario familiarizarse con sus opciones.


Vamos a adentrarnos en las profundidades de este comando de una manera progresiva.


Recordad que el primer argumento que le pasamos a find es donde buscar.

Encuentra archivos de una determinada extensión.
#find . -name *.jpg

Encuentra archivos que pertenezcan a cierto usuario.
#find . -user squid

Busca sólo directorios (si lo combinamos con lo anterior, sólo mostrará el tipo especificado -directorio), tambien podría buscar archivos (f), links (l), o sockets (s).
#find . -user squid -type d

Busca archivos mayores de 1G.
#find /home/movies -size +1048576k
o según sistema.
#find /home/movies -size +1024M

Podemos combinar argumentos. (usuario y tamaño)
#find . -user squid -size +1024M

Excluimos un archivo que sabemos cumplirá esa condición.
#find . -user squid -size +1024M ! -name access.log*


Opciones para análisis forense.

Encuentra todos los archivos de /etc propiedad de root que han sido modificados en las últimas 24 horas.
#find /etc -user root -mtime 1

(si no nos sale ninguno, probar a añadir o borrar un usuario del sistema, y ejecutarlo después).

Muestrame todos los archivos de /etc propiedad de root que han sido modificados en los 2 últimos minutos.
#find /etc -user root -amin -2

Muestrame todos los archivos de /etc con demasiados permisos
#find /etc -perm 777


COMBINA FIND CON XARGS

Con esta combinación podremos ejecutar una acción determinada para cada archivo que nos muestre find.
Hasta ahora habíamos visto algunas opciones con find del tipo "muestrame este tipo de archivos", pero más interesante es poder decirle al sistema, "Coge cada archivo propiedad de John que no haya sido accedido en los últimos 60 días y muevelo a la carpeta Backup".

Busca archivos en esta ruta que sean propiedad de el usuario john y bórralos.
#find /usr/local -user john -type f | xargs rm

Corrige los permisos de tu directorio web.
find /usr/local/apache/htdocs/tuweb -type d | xargs chmod 755

Y mi favorito para aplicar una cuota a los usuarios de una partición entera.

Imagina una partición de un servidor que contiene 1000 usuarios, aplica la cuota especificada a todos ellos con este simple comando.
#find /home/users -type d -maxdepth 1 -mindepth 1 | awk -F "/" '{print $3}' | xargs -i edquota -F vfsv0 -u {}


VIA