Para coger la salida de un script, se hace con el signo flecha (>) y doble flecha (»)
- > Crea el fichero de nuevo. Si existe, lo borra - >> Añade al final del fichero la salida
Ejemplo:
# ls fichero1.txt fichero2.txt fichero3.txt fichero4.txt
Lo redirejimos:
# ls > ls.txt #
# cat ls.txt fichero1.txt fichero2.txt fichero3.txt fichero4.txt ls.txt
Hay otra salida que es el error. Es decir, si hacemos ls de un fichero que no existe nos dará error:
# ls jur.txt ls: cannot access 'jur.txt': No such file or directory
Si hacemos la redirección, nos aparece en pantalla y no lo graba en el fichero. El fichero ls.log está vacio:
# ls jur.txt > ls.log ls: cannot access 'jur.txt': No such file or directory # cat ls.log #
La salida error (stderr) es la 2 y la salida estándar (stdout) es la 1. Podemos redirigir la salida de error a otro fichero:
# ls jur.txt > ls.log 2>ls_error.log #
# cat ls_error.log ls: cannot access 'jur.txt': No such file or directory
Para juntar todo en el mismo log:
# ls jur.txt > ls.log 2>&1 # # cat ls.log ls: cannot access 'jur.txt': No such file or directory
Nombre de Ficheros Una buena idea es poner fecha en las líneas de código o en un los nombres. Con date:
date +%Y%m%d_%H%M%S 20210222_101819
El crontab usa path relativos, variables de entornos propias y a veces no sabemos porque falla. Es interesante redirigir toda la salida a un fichero de log al principio para controlarlo:
crontab -l
*/1 * * * * script.sh >> /home/usuario/crontab.log 2>&1