find es una herramienta muy poderosa, que por defecto, busca en todos los directorios de manera recursiva (considera todos los directorios existentes bajo el que estamos buscando y dentro de estos y así), sin embargo, para algunas tareas puede ser necesario, que busque sólo en un directorio en particular, sin considerar los demás directorios, entonces para ello, se puede usar la opción prune:
find /mi/directorio/* -prune -name 'tntcpi_fm.log.*' -mtime +5 -exec rm {} \+
el argumento /mi/directorio/* es donde buscará, y el * es importante porque sin este no realiza la búsqueda al usar prune.
con -name le damos un patrón del nombre en este caso debiera comenzar co la palabra tntcpi_fm.log. el nombre del archivo
mtime +5 indica que además considere los archivos que fueron modificados más de 5 días atrás
exec le indicamos que ejecute algún comando para ese archivo, en este caso es un rm para eliminar el archivo encontrado.
Este blog tiene la idea de acercar un poco el tema de las herramientas computacionales, usando preferencialemente Linux, y traducir a "cristiano" todos esos programas, software y otras palabras raras que usan los que saben de computación y aquellos que dicen saber también. Por eso aquí va un filtro con cosas útiles e intentado ser claro, cualquier cosa... por mail, msn, comentarios, etc como quieran, manden preguntas, felicitaciones, reclamos, inquietudes, etc. etc.
Buscar aquí
30 junio 2015
26 marzo 2015
Obtener la fecha en distintos formatos
Siempre la manipulación de la fecha es un lío, una manera fácil de hacer, es utilizando el mismo comando date -funciona en linux y HPUX- por ejemplo:
[arturo@Linux ~]$ date -u +%Y-%m-%d
2015-03-26
el -u indica que queremos la salida de la fecha y con + entregamos el formato que queremos, aquí un par más:
[arturo@Linux ~]$ date -u +%X
02:38:53 PM
[arturo@Linux ~]$ date -u +%F
2015-03-26
o junto:
[arturo@Linux ~]$ date -u +%F-%X
2015-03-26-02:39:42 PM
ahora si quisieramos por ejemplo un archivo con la fecha, podriamos hacer algo así:
NOMARCHIVO="archivo_del_"`date -u +%F`".txt"
touch $NOMARCHIVO
entonces:
[arturo@Linux ~]$ NOMARCHIVO="archivo_del_"`date -u +%F`".txt"
[arturo@Linux ~]$ touch $NOMARCHIVO
[arturo@Linux ~]$ ll $NOMARCHIVO
-rw-rw-r--. 1 arturo arturo 0 Mar 26 11:42 archivo_del_2015-03-26.txt
[arturo@Linux ~]$ date -u +%Y-%m-%d
2015-03-26
el -u indica que queremos la salida de la fecha y con + entregamos el formato que queremos, aquí un par más:
[arturo@Linux ~]$ date -u +%X
02:38:53 PM
[arturo@Linux ~]$ date -u +%F
2015-03-26
o junto:
[arturo@Linux ~]$ date -u +%F-%X
2015-03-26-02:39:42 PM
ahora si quisieramos por ejemplo un archivo con la fecha, podriamos hacer algo así:
NOMARCHIVO="archivo_del_"`date -u +%F`".txt"
touch $NOMARCHIVO
entonces:
[arturo@Linux ~]$ NOMARCHIVO="archivo_del_"`date -u +%F`".txt"
[arturo@Linux ~]$ touch $NOMARCHIVO
[arturo@Linux ~]$ ll $NOMARCHIVO
-rw-rw-r--. 1 arturo arturo 0 Mar 26 11:42 archivo_del_2015-03-26.txt
20 marzo 2015
Leer un archivo con un script en shell
Muchas veces es necesario procesar los contenidos de un archivo desde el shell de linux para ejecutar alguna acción, por ejemplo:
#!/bin/sh
while read line
do
echo $line
done < nombre_del_archivo
Este script hace algo muy simple, lee cada linea del archivo y la escribe por pantalla. Hay una diferencia importante, es que este script considera todo el contenido de la linea, mientras que al usar una sentencia for, toma sólo la primera palaba hasta el separador, que por defecto es el espacio, por eso, es común tener algún problema al usar la sentencia for cuando se quiere leer la línea completa.
En el caso del for sería algo así:
for linea in `cat archivo`
do
echo $linea
done
#!/bin/sh
while read line
do
echo $line
done < nombre_del_archivo
Este script hace algo muy simple, lee cada linea del archivo y la escribe por pantalla. Hay una diferencia importante, es que este script considera todo el contenido de la linea, mientras que al usar una sentencia for, toma sólo la primera palaba hasta el separador, que por defecto es el espacio, por eso, es común tener algún problema al usar la sentencia for cuando se quiere leer la línea completa.
En el caso del for sería algo así:
for linea in `cat archivo`
do
echo $linea
done
04 marzo 2015
Utilizar el contenido de un archivo para generar otro, pero filtrado
Muy común es la necesidad de utilizar el contenido de un archivo para generar otro, sea este nuevo un informe, un subconjunto del utilizado como fuente, por ejemplo, tenemos un archivo con los siguientes datos
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
766 fernando rut -
lo guardo en un archivo llamado awktest para efectos de mostrar el funcionamento.
Si se fijan, el último tiene un guión en lugar de número, entonces, en el caso que quiera obtener los registros que tengan la palabra rut y seguida de un conjunto de números, podemos utilizar el comando awk de la siguiente forma:
[test@Linux ~]# awk '/rut/&&/ +[0-9]/ { print $0 }' awktest
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
Ahora, el efecto de utilizar algo así: awk '/ +[0-9]/ { print $0 }' awktest para este caso entrega el mismo resultado, salvo si existiera un registro con un registro como:
765 pablo RuT 6543
Este sera mostrado:
[test@Linux ~]# awk '/ +[0-9]/ { print $0 }' awktest.awk
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
765 pablo RuT 6543
a diferencia del primer comando, donde busca la palabra rut de manera literal.
Ahora el comando se compone así:
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
766 fernando rut -
lo guardo en un archivo llamado awktest para efectos de mostrar el funcionamento.
Si se fijan, el último tiene un guión en lugar de número, entonces, en el caso que quiera obtener los registros que tengan la palabra rut y seguida de un conjunto de números, podemos utilizar el comando awk de la siguiente forma:
[test@Linux ~]# awk '/rut/&&/ +[0-9]/ { print $0 }' awktest
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
Ahora, el efecto de utilizar algo así: awk '/ +[0-9]/ { print $0 }' awktest para este caso entrega el mismo resultado, salvo si existiera un registro con un registro como:
765 pablo RuT 6543
Este sera mostrado:
[test@Linux ~]# awk '/ +[0-9]/ { print $0 }' awktest.awk
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
765 pablo RuT 6543
a diferencia del primer comando, donde busca la palabra rut de manera literal.
Ahora el comando se compone así:
- awk, el comando en sí mismo.
- El símbolo ' indica el inicio los parametros para el comando distintos al archivo o entrada
- El texto existente entre los slash / son los elementos que busca de manera literal. El texto a buscar debe ir entre dos slash.
- El símbolo & repetido, indica un y lógico, un AND, entonces decimos que busque rut y el segundo elemento.
- El elemento +[0-9] quiere decir que debe ir una cadena de numeros, entre 0 y 9, con al menos un número y no importa cuantos exista.
- Entre los símbolos { } están las acciones que se aplicarán a los registros que cumplan con la condición, en este caso print $0 muestra la línea completa entrante.
- Finalmente el archivo que será utilizado como entrada
23 febrero 2015
Problemas con Applets Java
Desgraciadamente es bastante común en Linux tener problemas con las applets Java, por asuntos de seguridad, y existe una enorme cantidad de causas bajo este tipo de problema, a la hora de intentar de cargar la applet. Una opción, es que si saben que el sitio es inofensivo y el applet les debe cargar necesariamente, se puede ajustar la opción de seguridad en el panel de control de la versión de java que estemos ejecutando, para ello:
¿Dónde esta el ejecutable de java que estamos usando? podemos utilizar el comando which, algo así:
which java, y nos responderá: /usr/bin/java, esto quiere decir que estamos usando alternatives entonces a continuar debemos ejecutar:
[miuser@Linux ~]$ alternatives --display java
java - status is manual.
link currently points to /usr/java/jre1.7.0_60/bin/java
y con esto obtendremos la ruta de donde está ubicado el java que estamos utilizando. Entonces ahora basta con que ejecutemos el Panel de Control de Java, para usamos hasta bin de la ruta obtenida, algo así:
/usr/java/jre1.7.0_60/bin/ControlPanel
aparece una ventana como esta:
Como ven, dice Java in the browser is enabled See security tab, entonces debemos revisar la tab Security, veremos algo como esto:
Ahora aquí es donde le diremos que nuestro sitio ES DE CONFIANZA y que no nos bloquee las applets por temas de seguridad, entonces hacemos click en botón Edit Site List y veremos algo como:
Entonces agregamos las URL presionando Add basta con agregar el comienzo de la URL, por ejemplo: http://miservidor:8080 o http://miservidor.miempresa.com depende netamente de la URL que se use.
Después de presionar Ok, si la URL inicia con HTTP y no HTTPS, aparece una advertencia que podemos ignorar, pues consideren que estamos indicando a Java, que no se preocupe por las applets que tenga este sitio, que las cargue sin cuestionarlas y esto, es tremendamente peligroso, por eso, esto lo podemos hacer sólo con sitios internos o que conozcamos perfectamente.
¿Dónde esta el ejecutable de java que estamos usando? podemos utilizar el comando which, algo así:
which java, y nos responderá: /usr/bin/java, esto quiere decir que estamos usando alternatives entonces a continuar debemos ejecutar:
[miuser@Linux ~]$ alternatives --display java
java - status is manual.
link currently points to /usr/java/jre1.7.0_60/bin/java
y con esto obtendremos la ruta de donde está ubicado el java que estamos utilizando. Entonces ahora basta con que ejecutemos el Panel de Control de Java, para usamos hasta bin de la ruta obtenida, algo así:
/usr/java/jre1.7.0_60/bin/ControlPanel
aparece una ventana como esta:
Como ven, dice Java in the browser is enabled See security tab, entonces debemos revisar la tab Security, veremos algo como esto:
Ahora aquí es donde le diremos que nuestro sitio ES DE CONFIANZA y que no nos bloquee las applets por temas de seguridad, entonces hacemos click en botón Edit Site List y veremos algo como:
Entonces agregamos las URL presionando Add basta con agregar el comienzo de la URL, por ejemplo: http://miservidor:8080 o http://miservidor.miempresa.com depende netamente de la URL que se use.
Después de presionar Ok, si la URL inicia con HTTP y no HTTPS, aparece una advertencia que podemos ignorar, pues consideren que estamos indicando a Java, que no se preocupe por las applets que tenga este sitio, que las cargue sin cuestionarlas y esto, es tremendamente peligroso, por eso, esto lo podemos hacer sólo con sitios internos o que conozcamos perfectamente.
Suscribirse a:
Entradas (Atom)