LINUX.ORG.RU

bash скрипт перенаправление ошибок в файл

 


0

1

Здравствуйте, подскажите пожалуйста, есть bash скрипт и нужно писать в лог, успешно или нет отработала команда или нет в таком формате: «Команда отработала успешно» либо «Команда завершилась с ошибкой». И далее перенаправлять поток ошибок в этот же лог файл Все работает, за исключением одного момента. У меня сейчас получается сначала идет перенаправление потока ошибок в файл, а далее уже вывод сообщения «Команда завершилась с ошибкой». Не могу понять, как сделать наоборот, чтобы сначала выводилось сообщение, а потом уже сама ошибка

Вот мой скрипт:

# лог файл
LOG_FILE=/log/my.log
# выполняем нужную нам команду
ls -l skldjflkjsdf 2>> $LOG_FILE
# пишем в лог, успешно завершилась команда или нет
if [ $? -eq 0 ]; then
echo "Команда отработала успешно" >> $LOG_FILE
else echo "завершилась ошибкой" > $LOG_FILE
fi

Код возврата доступен по завершении работы программы, а в лог программа пишет во время работы. Если порядок критичен, то сохраняй вывод на stderr в переменную, и, после завершения работы программы, записывай всё в файл в нужном порядке.

ComradeDOS
()
Последнее исправление: ComradeDOS (всего исправлений: 1)

еще как вариант использовать временый файл в tmpfs

$TMP_FILE=/run/user/$UID/$RANDOM

ls -l skldjflkjsdf 2>> $TMP_FILE

if [ $? -eq 0 ]; then
echo "Команда отработала успешно" > $LOG_FILE
else echo "завершилась ошибкой" > $LOG_FILE
fi

cat $TMP_FILE >> $LOG_FILE

rm $TMP_FILE
pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)