У меня есть скрипт, который вызывает несколько команд, некоторые из которых шумят для stdout, некоторые для stderr, некоторые для обоих. Я хочу, чтобы скрипт запускался cron, поэтому я не хочу, чтобы он был шумным и отправлял мне письма каждый день - только в случае ошибки Итак, я делаю:
be_quiet() {
# save stderr in FD 3
exec 3>&2
exec &> /dev/null
}
die() {
# restore stderr
exec 2>&3
echo $* > /dev/stderr
exit 1
}
Тогда, т. Е.
be_quiet
mkdir -p $CLIENT_ROOT || die "Could not create client root."
cd $CLIENT_ROOT || die "Could not cd to client root."
Смысл в том, чтобы я получал конкретные и значимые для меня сообщения, если есть ошибка, и ничего другого. Но то, что я вижу сейчас, это просто
line 48: /dev/stderr: Permission denied
При запуске из командной строки это работает. При запуске через cron выдает сообщение об отказе в разрешении. Мне непонятно почему.