Я могу использовать хвост с файлом и, как введено и место назначения?

Вот еще один способ считать подкаталоги (нерекурсивно) в Bash:

(
shopt -s nullglob dotglob
printf '%s\000' */ | tr -dc '\0' | wc -c  # wc counts null bytes
)

Поскольку каждое имя файла завершается символом ASCII NUL, это должно работать правильно, даже если имя файла содержит символ новой строки.

1
27.10.2011, 22:35
1 ответ

Вы могли использовать что-то вроде этого, но это действительно не рекомендуется:

{ rm logfile.log && tail -n 100000 > logfile.log ;} < logfile.log

Это лучше:

tail -n 100000 logfile.log > _tmp_ &&
  mv -- _tmp_ logfile.log
2
27.01.2020, 23:40
  • 1
    . я должен, вероятно, просто использовать logrotate., не уверенный, что я думал. –  cwd 27.10.2011, 22:50
  • 2
    Да, необходимо определенно использовать logrotate. –  Dimitre Radoulov 27.10.2011, 22:52
  • 3
    , второй метод лучше - но пропускает очень важный шаг. Если будет все еще дескриптор файла, открытый на файле журнала, то место будет существовать на диске, пока это не будет закрыто (и приложение продолжит писать в старое место - не новый файл). Необходимо сказать приложению вновь открыть файл. –  symcbean 28.10.2011, 12:22
  • 4
    @symcbean, да, очень положительная сторона! Я предполагаю, что это могло быть обработано с термофиксатором. –  Dimitre Radoulov 28.10.2011, 12:24

Теги

Похожие вопросы