
Depois que STDERR é redirecionado, por exemplo, para um arquivo, como ele pode ser redirecionado de volta para o descritor de arquivo original 2?
#!/bin/sh
exec 2>/tmp/err
print -u2 'log errors to file'
exec 2>&2 (how do we do this???)
print -u2 'log errors to console'
Contexto
Esta solução de redirecionamento deve funcionar em um cron job. Por exemplo, se o cron executar um script externo, esse script redirecionará stdout e stderr para arquivos de log e de erro relevantes, respectivamente. No entanto, se uma execução no script falhar ou algo precisar ser relatado ao proprietário do trabalho, preciso enviar as mensagens de erro para que o cron as receba e envie o email.
Responder1
Tentar:
#!/usr/bin/env ksh
exec 2>ksh_err.txt
print -u2 'log errors to file'
exec 2>`tty`
print -u2 'log errors to console'
Editar 1:
#!/usr/bin/env ksh
exec 8>err.txt
print -u8 'log errors to file'
print -u2 'log errors to console'
Editar 2:
#!/usr/bin/env ksh
exec 3>&2
exec 2>err.txt
print -u2 'log errors to file'
exec 2>&3
print -u2 'log errors to console'