Discussion:
[shell-script] Arquivo de log
igor marcel abreu ferreira igormarcelabreu@gmail.com [shell-script]
2017-10-19 21:30:52 UTC
Permalink
Boa noite

Estou fazendo um script para realizar a atualização de um portal, eu
coloquei para que a execução vá para uma arquivo de log. Pergunta
Gostaria de saber tem como jogar esse arquivo o modo debug do shell script
e na apenas a execução normal na tela pro usuario?

# LOG DA EXECUÇAO DO SCRIPT
#
LOGFILE="/var/log/${0##*/}".log
exec 1> >(tee -a "$LOGFILE")
exec 2>&1
echo "[`date`] ==== INICIO DA ROTINA..."

...

echo "[`date`] ==== FINAL DA ROTINA..."
--
Att

*Igor Marcel Abreu Ferreira*
*LPIC - 01 | LPIC - 02** | ITIL v3 Foundation | Novell CLA *

(61) 9557-9546
Twitter - @igormarcel
LinkedIn: http://br.linkedin.com/in/igormarcel
Linux Registered User # 549918

*"Com Deus todas as coisas são possíveis"*

*Mateus 19:26 *
itamarnet@yahoo.com.br [shell-script]
2017-10-20 13:15:00 UTC
Permalink
Olá Igor
Eu não sei se entendi direito, mas se é para que as mensagens de erro sejam apenas para o arquivo é só trocar exec 2>&1 por exec 2> "$LOGFILE".


Mas se o debug que cita é o modo " set -x " não sei se é possível nessa forma usando o exec.


Mas se for o caso, algo que imagino seria:
# LOG DA EXECUÇAO DO SCRIPT
#
LOGFILE="/var/log/${0##*/}".log
exec 1> "$LOGFILE"

exec 2>&1

set -x
echo "[`date`] ==== INICIO DA ROTINA..."



...


echo "[`date`] ==== FINAL DA ROTINA..."
set +x
sed '/^+/d' "$LOGFILE"




Não sei se isso funciona pois não tenho coo testar no momento, mas é uma opção se for o que imaginei.


[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2017-10-20 13:22:55 UTC
Permalink
Olá Igor
Eu não sei se entendi direito, mas se é para que as mensagens de erro sejam apenas para o arquivo é só trocar exec 2>&1 por exec 2> "$LOGFILE".


Mas se o debug que cita é o modo " set -x " não sei se é possível nessa forma usando o exec.


Mas se for o caso, algo que imagino seria:
# LOG DA EXECUÇAO DO SCRIPT
#
LOGFILE="/var/log/${0##*/}".log
exec 3>&1 1>"$LOGFILE"
exec 2>&1

set -x
echo "[`date`] ==== INICIO DA ROTINA..."



...


echo "[`date`] ==== FINAL DA ROTINA..."
set +x
exec 1>&3 3>&-

sed '/^+/d' "$LOGFILE"




Não sei se isso funciona pois não tenho como testar no momento, mas é uma opção se for o que imaginei.


[]'s
Itamar

Loading...