Este es otro de mis pequeños scripts que suelo utilizar y/o adaptar para diferentes circunstancias. Un script sencillo, escrito para Korn Shell pero fácilmente portable a Bash u otro similar.
Para ser ciertos, más que scripting, este ejemplo es una clase de find, un comando tan potente que casi que nos permite “programar” con find
Antes de pasar a ver el código, comento un poco la necesidad que dió origen a este pequeño ejemplar para que tu puedas interpretarlo y, por que no, adaptarlo a tu necesidad.
La cuestión es así, mis aplicaciones y procesos sin logs no tienen razón de ser, todo se loguea, con fines de detectar anomalías, ver errores de software e incluso para hacer auditorias.
ls -l nos da bastante información acerca de nuestros archivos y/o directorios. Sin embargo, cuando esa información no es suficiente y queremos más, de seguro que el comando stat nos ayudará.
Como debería ser sabido, todo en Unix se trata como archivo (archivos propiamente dichos, directorios, dispositivos, etc). El comando stat nos muestra el estado de archivos y del sistema de archivos tal como se podrá ver en este artículo.
Se dice que el viejazo, fenómeno ocurrido en personas del sexo masculino, también llamado segunda adolescencia se produce a las cuatro décadas. UNIX es pronto a cumplir esa edad, aproximadamente por el mes de agosto, sin embargo no creo que se trate de una segunda adolescencia, pues Unix nunca envejeció, al contrario, cada día está más joven.
La historia cuenta que allá por 1969, días después de la llegada del hombre a la luna (si es alguien cree en ese discutible suceso) un programador llamdo Ken Thomson de Bell Laboratories (subsidiaria de AT&T) aprovechando la susencia de su mujer e hijo por vacaciones (que casualidad ¿no?) escribió la primera versión de Unix en un lenguaje ensamblador.
En marzo del mismo año, los mismos laboratorios habían renunciado a seguir con un ambicioso proyecto de sistema de tiempo compartido llamado Multics (Multiplexed Information and Computer Service), del que Thomson aplicó algunos principios y como broma al proyecto anterior denominó Unics (reemplazando la primer paralabra por Thomson Uniplexed) a su proyecto.
Como AT&T Bell vió que el proyecto tenía futuro decidió apostar al proyecto e incorporar a varios programadores de los cuales se destaca Brian Kernighan. Por motivos desconocidos UNICS pasa llamarse UNIX y va tomando forma adquiriendo nuvas funcionalidades y aplicaciones como cat, chmod, chown, cp, ls, mv, who, wc, etc. Si bien el desarrollo era rápido, el principal cuello de botella estaba en Ensamblador, es así que aparece Dennis Ritchie quien con colaboración de Kernighan escribe un lenguaje de más alto nivel, añadiendo nuevas funcionalidades y más abstracción que lo que ofrecía el lenguaje B. El éxito fue rotundo y para 1973 todo UNIX ya estaba re-escrito en C.
Requisito de un tema laboral fue crear de urgencia unos backups full e incrementales de un repositorio. Como siempre estos requerimientos se requieren para ayer y son para salvar cabezas cuando las papas queman.
Debido al gran volumen de datos, como estrategia de backups se decidió realizar un backup full mensualmente y un backup incremental diario.
A tal fin, se escribieron dos scripts, el primero de ellos, que dado un directorio crea un tar comprimido del mismo. Y el segundo, el que se ejecuta diariamente, que se encarga de verificar la fecha de modificación del último backup full del directorio y a partir de la misma crea un tar comprimido con los cambios desde entonces.
Nada de otro mundo, dos scripts sencillos, pero que se dejan a vuestra disposición por si las moscas.
En esta publicación lo que sobran son las palabras y vamos directo a los hechos. A continuación veremos varios ejemplos del uso del comando grep.
Usamos grep para buscar una palabra dentro de un archivo en Linux, pero… ¿hasta donde podemos llegar con su uso?
vi es un editor de texto de pantalla completa clásico de UNIX. Como no tiene interfaz grafica puede usarse en cualquier tipo de terminal. Su uso se torna “obligatorio” cuando debes administrar servidores a los que solo puedes acceder por consola (telnet o ssh).
Si bien existen otras alternativas más versátiles, como emacs, pico (nano), etc., vi está presente en todos los UNIX, requiere pocos recursos y se usa mucho en administración (para programar y en situaciones de emergencia)
Con las razones antes expuestas es prácticamente imprescindible que tengas y/o adquieras algún conocimiento de vi.
ifconfig es el comando utilizado para configurar las placas de red. Es posible que tu distribución de Linux lo haga todo por si sola, o bien, cuando lo haces manualmente recurres a un interfaz gráfica.
De todas formas, ifconfig es ampliamente utilizado y no solo en Linux, sino en la mayoría de los clones de UNIX.
A continuación veremos algunos ejemplos del uso de ifconfig.
Las hojas de referencia son todo un clásico en este blog, recuerda sino:
En esta ocasión nuestra cheat sheet es muy breve y pequeña, pero tiene todo lo que tiene que tener para que no te confundas más al editar el cron de tu Linux o cualquier otro clon de UNIX.
El objetivo de un depurador es que le permite ver lo que está sucediendo dentro de otro programa mientras se ejecuta. Es útil para averiguar qué estaba haciendo otro programa en el momento en que “pinchó”. La mayoría de gente recomienda GNU gdb, Nemiver, valgrind o algún IDE como el Eclipse. Lo cierto, por increíble que parezca, es que mucha gente utiliza el viejo y querido printf(), por más que no sea la forma correcta y ortodoxa de debuguear.
Glendix es un proyecto relativamente nuevo que tiene como meta combinar el kernel de Linux con las herramientas de usuario que ofrece el sistema operativo Plan 9.
GNU/Linux es un sistema operativo libre, pero por ser estrictamente compatible con las normas POSIX lo hace poco innovador.
Plan 9 fue el sucesor de UNIX en los laboratorios Bell y ofrece características útiles y eficaces, de entre las cuales se destacan sistemas de archivos de síntesis, procesos por nombres, frescura en los gráficos, editores de texto, etc.
Ahora, el núcleo de Plan 9 es relativamente nuevo aún y por lo tanto no tiene mucho soporte para hardware. Diferente al Kernel de Linux, que con el paso de los años ha dado apoyo para cada vez más componentes de hardware.
Por tal motivo, Glendix pretende combinar el espacio de usuario de Plan 9 con el Kernel de Linux, es decir, aprovechar las mejores características de cada mundo.