Практическое задание

Эта задача — шаг 10 курса «Bash-скрипты: от цикла до надёжного скрипта»

Вывод — и на экран, и в лог

средне~7 мин

Скрипт /root/job.sh пишет и в stdout, и в stderr. Напиши обёртку /root/run_job.sh, которая запускает job.sh так, чтобы весь его вывод — оба потока, stdout и stderr, — одновременно и показывался на экране (в stdout обёртки), и записывался в /root/job.log.

Что потренируешь:
  • tee
  • 2>&1
  • перенаправление потоков
  • stdout/stderr
  • пайпы

Разбор темы

У процесса два выходных потока: stdout (1) и stderr (2). Перенаправление 2>&1 направляет stderr туда же, куда сейчас указывает stdout, — потоки сливаются. tee — «тройник»: копирует stdin одновременно в файл и в собственный stdout, что позволяет и видеть вывод, и сохранять его. Порядок команда 2>&1 | tee файл важен: слияние должно произойти до входа в конвейер.

Что проверяется

  1. обёртка run_job.sh запускает job.sh
  2. обе строки видны на экране
  3. обе строки записаны в job.log

Как это выглядит