У меня есть рабочий процесс, который был запущен с помощью
./process | tee -a output.txt
Так как это - довольно долгий процесс, выходной файл является большим и каждый раз, когда я открываю его для проверки, я должен ожидать его, чтобы быть загруженным и затем иметь для прокручивания вниз к нижней части, которая не удобна. Поэтому я решил переместить текущее содержание в файл резервной копии output_bak.txt
и оставьте ток output.txt
очистите так, чтобы это только содержало новый вывод. К сожалению, это не работало. Процесс не пишет в output.txt
больше.
Мой вопрос состоит в том, как позволить процессу продолжить писать в output.txt
?
Заранее спасибо за помощь!
Обновление: То, что я подразумевал 'под перемещением содержания', является на самом деле копией содержание файла в другой файл, затем удалите содержание в текущем файле. Более точно то, что я сделал: открытый output.txt
, нажмите Ctrl + для копирования содержания затем Ctrl + V в output_bak.txt
, затем обратно к output.txt
и Ctrl + затем Удаляют и Сохраняют.
Вы не можете. При открытии файла процесс получает дескриптор файла. Дескриптор файла не изменяется, даже если файл перемещен или удален. Таким образом процесс будет писать в тот же дескриптор файла, в который Вы переместились output_bak.txt
. Необходимо будет закрыть файл и вновь открыть его.
Можно использовать утилиты Unix как tail
просмотреть конец файла. tail -n 20 output.txt
произведет последние 20 строк output.txt
.
Хвост может также обеспечить предпросмотр в реальном времени. tail -f output.txt
покажет содержание, как оно записано в файл в непрерывном потоке, пока Вы не прерываете его Ctrl+c.
Это между прочим, как logrotate работает. Переместите файл, создайте новый пустой файл и перезапустите процесс, пишущий в файл журнала.