Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Archive for November, 2009

Encontrando ficheros por contenido en FreeBSD (buscando cadenas de texto en ficheros)

La utilidades standard para buscar cadenas de texto en ficheros son grep/egrep para la búsqueda de expresiones regulares y fgrep para buscar cadenas literales. Para buscar una expresión en todos los ficheros del directorio actual sólo tipea:

egrep -i "search expression" *

Para buscar cadenas en todos los ficheros de todo el árbol de directorios puedes combinar el comando find con otro comando de búsqueda de archivo, por ejemplo: egrep. Esto puede ser realizado de muchas formas:

egrep -i "expression" `find . -type f -print`
find . -type f -exec egrep -i "expression" /dev/null {} ;
find . -type f -print | xargs egrep -i "expression"

Un programa de búsqueda muy interesante es agrep. Este funciona básicamente como egrep pero realiza búsquedas que toleran errores en la escritura del nombre. De esta manera puedes también encontrar palabras mal escritas. Para buscar una expresión con un máximo de dos errores de escritura puedes usar:

agrep -i -2 "search exprission" *

Hay muchas utilidades de búsqueda disponibles para Unix. Por lo tanto este artículo no puede estar completo.

Buscando ficheros por nombre en FreeBSD

Probablemente puedes recordar este problema: Tenías algún tipo de fichero y no podías recordar donde lo pusiste.
Aquí es donde el comando find viene a ser útil. ¿Cómo usarlo? find viene, por supuesto, con un extenso man page pero veamos unos “casos típicos”: Buscar un archivo llamado lostfile.txt, recorriendo el árbol de directorios comenzando en el directorio actual:

find . -name lostfile.txt -print

find acepta también wildcards. Recuerda colocar entre comillas los wildcards, de lo contrario el shell no los reconocerá como tales. Aquí un ejemplo:

find . -name "lost*" -print

Este comando puede ser un poco lento cuando necesites buscar en un árbol de directorios muy grande. Aquí el comando locate puede ayudar. Este realmente no busca directamente un archivo en el sistema de ficheros. Busca en una base de datos. Es bastante más rápido pero la base de datos podría estar desactualizada, pero puedes, por supuesto, correr el comando updatedb manualmente de vez en cuando para actualizarla. locate realiza búsquedas de subcadenas.

locate lostfile

Este localiza los ficheros lostfile.txt o mylostfile.txt, etc…

Algunas veces te gustaría encontrar todos los ficheros en el árbol de directorios que no contengan cierta cadena. Por ejemplo todos los ficheros excepto .o y .c. Aquí están un par de posibilidades para hacerlo::

find . ! -name "*.o" ! -name "*.c" -print
find . -print | fgrep -v '.o' | fgrep -v '.c'

Hay muchas utilidades de búsqueda disponibles para Unix. Por lo tanto este artículo no puede estar completo.

Partiendo un archivo AVI sobre linux

Usa avisplit que viene en el paquete de transcode de ubuntu con un comando como

$avisplit -i archivo_a_cortar.avi -s Tamaño_en_megas

Pero si quieres usar algo del entorno gráfico usa avidemux (aunque a mi me desincroniza el
audio).

Convertir un avi a mpeg en linux

ffmpeg -i goemon.avi -target pal-vcd goemon.mpg

Las Entradas al Kernel FreeBSD

Las entradas al kernel pueden ser categorizadas en base al tipo de evento que las origina.

* Interrupciones de Hardware
* Mensajes de Hardware (hardware trap)
* Mensajes de Software-Inicializado

* Interrupciones de Hardware son el origen de eventos externos, tales como un dispositivo I/O solicitando atencion o un reloj reportando el paso del tiempo. Las Interrupciones de Hardware ocurren asincronamente y pudieran no estar relacionadas al contexto del actual proceso en ejecucion.

* Hardware traps pueden ser sincronos o asincronos pero estan relacionados al actual proceso en ejecucion. Ejemplos de hardware traps son aquellos generados como un resultado de una operacion aritmetica ilegal, tal como los es la division ocacionada por cero.

* Mensajes de Software-Inicializado son usados como la consecuencia de que el sistema force la planeacion de un evento, tal como procesos replaneando procesos o procesamiento de red, tan pronto como sea posible. Mensajes de Software-Inicializado son implementados mediante el seteo de una bandera, que es activada siempre que un proceso este preparando salir del kernel. Si la bandera es seteada, el codigo de interrupcion de software es ejecutado en lugar de salir desde el kernel.

Las llamadas al sistema(System calls) son un caso especial de Mensajes de Software-Inicializado, la instruccion maquina usada para inicializar una system call tipicamente genera un hardware trap que es atendido especialmente por el kernel.

Procesos permanentes en el Kernel de FreeBSD (System Process)

La organizacion del kernel de FreeBSD puede ser vista como un proveedor de servicios a los procesos de los usuarios. Procesos usualmente accesaran a esos servicios mediante las llamadas al sistema (system calls). Algunos servicios, tales como planeacion y administracion de memoria, son implementados como procesos que se ejecutaran en modo kernel o como subrutinas que se ejecutan periodicamente dentro del kernel.

Existen procesos de kernel, y ellos funcionan enteramente dentro del kernel. (Los procesos de kernel executan codigo que es compilado dentro de la imagen cargada y opera con el modo de ejecucion privilegiada del kernel).

Nombre del Proceso Funcion
idle Corre cuando no hay mas nada por hacer
swapper Programa la carga de procesos proveenientes de la memoria secundaria hacia en memoria principal, cuando los recursos del sistema empiezan a estar disponibles
vmdaemon Programa la transferencia de procesos enteros hacia la memoria secundaria, cuando los recursos del sistema son bajos
ramdon Colecta datos para la produccion de semillas aleatorias para el kernel y el dispositivo /dev/ramdon
vnrlu Mantiene una fuente de vnodes libres, esto lo logra limpiando los vnodes cuya fecha de uso fue la menos reciente
pagedaemon Escribe partes de el espacio de direcciones de un proceso hacia un sistema de almacenamiento secundario, a razon de soportar las facilidades de paginacion , de un sistema de memoria virtual.
ktrace Escribe los registros de seguimiento a las llamadas al sistema (system calls) a sus archivos de salida.
bufdaemon Mantiene un suministro de buffers limpios, producto de buffers sucios cuando el suministro de buffers limpios esta abajo del nivel optimo.
syncer Asegura que los datos de archivo sucio estan escritos despues de 30 segundos.
pagezero Mantiene un suministro de paginas Cero.
g_up Toma los datos que van llegando de los dispositivos manejadores y los entrega a los procesos.
g_down Toma los datos que van llegando de los procesos y los entrega a los dispositivos manejadores.
g_event Toma tareas de configuracion, inclullendo en esto el descubrimiento de nuevos dispositivos y la remocion de estos cuando ellos ya han desaparecido.

Despues de que los procesos de kernel son creados, el kernel crea el primer proceso a ejecuta en modo usuario. Este sirve como el proceso padre para todos los subsecuentes procesos. El primer proceso en modo usuario es el programa init. Este metodo realizara tareas administrativas, tales como ejecutar procesos getty para cada terminal sobre la maquina, etc. El proceso init es un proceso de modo usuario y corre fuera del kernel.

Instalando Mysql 5.1 sobre FreeBSD 7.X

# cd /usr/ports/databases/mysql51-server
# make && make install
Agregar al fichero /etc/rc.conf lo siguiente para que mysql server arranque junto con el sistema operativo
# echo ‘mysql_enable=”YES”’ >> /etc/rc.conf
Ahora reinicie el equipo
# reboot

MySQL ya se encuentra instalado.. ahora creamos una base de datos llamada uno… asignada al usuario user con el password “password”…. Esta sera accesible desde cualquier direccion ip… gracias al comodin %
mysql> create database uno;
mysql> grant all on uno.* to user@’%’ identified by “password”;

No cabe duda que todo instrumento puede ser un instrumento de muerte

Entradas mas recientes »