1

Когда STDERR перенаправляется, например, в файл, как его можно перенаправить обратно в исходный дескриптор файла 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'

контекст

Это решение для перенаправления должно работать в режиме cron. Например, если cron выполняет внешний скрипт, он будет перенаправлять stdout и stderr в соответствующие файлы журнала и ошибок, соответственно. Однако, если выполнение скрипта завершается неудачно или что-то нужно сообщить владельцу задания, мне нужно вывести сообщения об ошибках, чтобы cron получал их и отправлял почту.

1 ответ1

2

Пытаться:

#!/usr/bin/env ksh
exec 2>ksh_err.txt
print -u2 'log errors to file'
exec 2>`tty`
print -u2 'log errors to console'

Изменить 1:

#!/usr/bin/env ksh

exec 8>err.txt
print -u8 'log errors to file'
print -u2 'log errors to console'

Изменить 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'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .