Прочитать все, что было выведено и отображено в окне терминала?

416
Topher

Я унаследовал сложный сценарий оболочки, работающий на OSX, который запускается в crontab. В рамках скрипта я хотел бы периодически читать все в окне терминала и записывать его в другой файл ... вроде как файл журнала, который я могу просмотреть позже.

Я пытаюсь захватить вещи, которые были ECHO'd в скрипте, а также любые сообщения об ошибках, отображаемые на терминале. (т. е. /Users/topher/program.sh: строка 58: В доступе отказано)

Это возможно? Какую команду можно прочитать с терминала или с выхода программы?

Спасибо! Тофер

1

3 ответа на вопрос

0
BloodPhilia

Если команда, которую вы запускаете из cron, выглядит следующим образом, все сгенерированные выходные данные будут записаны в logfile.logфайл

/Users/topher/program.sh > logfile.log 

Приведенная выше команда очистит logfile.logфайл и заполнит его выводом, сгенерированным program.shскриптом. Команда ниже добавит вывод.

/Users/topher/program.sh >> logfile.log 
0
Benjamin Bannier

Используйте teeдля вывода на экран и в файл.

./some/thing | tee thing.log 

Возможно, вы захотите перенаправить, stderrчтобы stdoutсбросить их обоих в файл журнала.

 ./some/thing 2>&1 | tee thing.log 
0
garyjohn

Я не знаю о терминальном приложении OS X, но некоторые терминалы, такие как, xtermмогут быть запущены с опцией, которая записывает все, что появляется на дисплее, в файл. Другая возможность - запустить scriptпрограмму, которая записывает все символы в терминал и из терминала в файл.