viernes, 30 de mayo de 2008

Comandos útiles para Unix Shell

Agrego algunos comandos útiles en Unix que siempre vienen bien tenerlos a mano. Hacen parte de las tareas diarias, en la creación de nuevos scripts de respaldo o en el tratamiento de logs que generan nuestros processos.

En este caso uso Solaris y ksh, pero dependiendo de la versión de Unix/Linux que estén utilizando, pueden variar algunos parámetros. De todas formas, la idea sirve para adaptarlos en cada ambiente.


Eliminar archivos gz con mas de 3 días de antiguedad
find . -mtime +3 -name "*.gz" -exec rm {} \;

Ejecutar un shell en background e independiente de la conexión
nohup ./shell.sh &
(este script retorna un número de job, puede ser útil anotarlo)

Para traer el proceso nuevamente al foreground
fg %(num_job)
(el número de job fue el que se retornó al colocar el proceso en background)

Colocar los nombres de archivo de un listado en un array
ARQS=$(cd ${DIR_RECARGA} ; ls *.dat)

Correr un script de sqlplus en Shell
#!/bin/ksh

sqlplus -s /nolog << !EOF
@$ORACLE_HOME/scripts/mi_script.sql

exit;
!EOF

Compactar todos los archivos de un directorio
#!/usr/sbin/ksh
for arch in `ls -t /*.arch tail +5`
do
gzip $arch
done

Ver y buscar en el contenido de un archivo comprimido con gzip
gzcat - CAT para archivos gz
gzgrep - GREP para archivos gz


Ver también:
Cómo verificar archivos y directorios en Shell
Limpieza de archivos en Unix
Cómo obtener la fecha de ayer en Unix