Я ищу по этому поводу и не нашел ответа.
Так что мой вопрос не о простом перенаправлении вывода в оболочке Linux. Я хочу, чтобы это происходило в скрипте bash, который я пишу, и я хочу, чтобы вывод и ошибка всех скриптов или команд, которые я запускаю в этом скрипте, были перенаправлены в отдельные файлы.
Это то, что я сейчас использую:
STATUSFILE=x.out
LOGFILE=x.log
exec > ${STATUSFILE} 2>${LOGFILE}
echo "bla bla"
#some other commands
, который работает нормально для нормальных выходов. Но, например, в части моего сценария я установил на свой резервный сервер команду ftp put. И когда я запускаю вручную, я вижу индикатор выполнения, показывающий, сколько времени прошло и сколько времени это займет.
То, что я пытаюсь сделать, - это захватить тот тип выходных данных, который, кажется, обновляется на лету и является своего рода динамическим, и в настоящее время я получаю другие выходные данные, хранящиеся в файлах, но не такие, как динамические.
И еще один вопрос: следую ли я хорошему подходу к этому. Как я уже сказал, я хочу получить вывод, и я собираюсь использовать его другим процессом, чтобы увидеть прогресс, а затем использовать его для информирования пользователя, пытающегося запустить задачу с помощью браузера.
Так, например, в моем случае это загрузка большого файла в хранилище ftp, какой пользователь будет командовать им из браузера, и я запускаю эти скрипты, и я хочу иметь своего рода индикатор выполнения, показывающий статус пользователю. (Я знаю, как справиться с этим на стороне клиента - возможно, проверка соединения с сокетом или ajax-запрос интервала для файла или событие, запускаемое сервером)
Мой второй вопрос: как мне получить прогресс команд, которые имеют динамический вывод.
Если что-то неясно, пожалуйста, дайте мне знать, я попытаюсь это исправить.
Спасибо за вашу помощь, ребята.