Как очистить содержимое файла журнала ретрансляции в оболочке?

Я использую redirect для записи вывода вывода println в файл xxx.log . Но я хочу переместить информацию журнала в отдельный файл с именем текущей даты дня, например, 2017-08-18.log by crontab.

Я попытался использовать > xxx.log shell, чтобы очистить файл xxx.log , но все восстановление содержимого при генерации нового журнала.

Как очистить файл журнала перенаправления?

ОБНОВИТЬ

  1. После выполнения > xxx.log xxx.log файла xxx.log равен 0. Но если мое приложение напечатает новый журнал, xxx.log не только содержит новую информацию о журнале, но также содержит ранее очищенную информацию журнала.
  2. После использования mv xxx.log xxx2.log , новая информация о журнале будет записываться в xxx2.log Но если я использую rm xxx.log вместо переименования, действие журнала остановится. Кроме того, процесс, вызванный nohup java -jar xxx.jar > xxx.log 2>&1 & если вы знакомы с playframework , файл выполнения создается командой dist для генерации файла jar.
  3. ps wx|grep "xxx.*.log output:
    1) 3912 pts/10 S+ 0:00 grep --color=auto xxx.log
    2) 26234 pts/10 Sl 0:16 /usr/lib/jvm/jdk1.8.0_111/bin/java -Duser.dir=...something ignored... play.core.server.ProdServerStart (это процесс выполняется команда)

Надеюсь, это будет полезно, спасибо еще раз!

  • Проблема с получением интерактивного ввода во время цикла чтения
  • Как отправить stdout на несколько команд в оболочке рыбы?
  • Перенаправление вывода в зависимости от регулярного выражения grep
  • Как перенаправить вывод команды в уже существующий файл без удаления его содержимого?
  • Запишите вывод команды Expect
  • Копирование или перенаправление текста в качестве входа в UART, необходимо обеспечить более медленную пропускную способность
  • Перенаправить вывод сценария в / dev / tty1, а также отобразить вывод в файл
  • Применение символов Escape в перенаправленном выходе
  • 2 Solutions collect form web for “Как очистить содержимое файла журнала ретрансляции в оболочке?”

    Проблема в том, что ваш файл журнала остается открытым приложением, которое пишет ему. Если вы > file.log файл ( > file.log ), ваше приложение все равно будет записывать его с точки его последней записи (из-за усечения, я полагаю, ваш файл будет заполнен 0 байтами до этой точки). Если вы переместите файл, ваше приложение будет продолжать записывать его, так как после его открытия его имя не имеет значения. Если вы удалите файл, блоки не будут освобождены от диска, и приложение все равно будет писать им, даже если файл больше не отображается в вашем каталоге.

    Это классический сценарий. Ваша заявка должна:

    • либо периодически открывать файл журнала
    • или обнаружить, что он был усечен и снова открыть его
    • или ждать специального сигнала, который сообщает ему «закрыть текущий файл журнала и снова открыть его»,

    Кроме того, вы ничего не можете сделать извне, кроме перезапуска приложения. Затем вы сделаете это так же, как logrotate :

    • сначала переместите файл журнала под новым именем
    • при необходимости touch файла журнала с его старым именем, чтобы файл существовал
    • перезапустите приложение, чтобы заставить его прекратить запись в старый файл журнала и начать запись на новый.

    Если у вас все в порядке с Perl, вы можете запустить этот маленький скрипт:

     use POSIX qw(strftime); $fbase = "tmp-%Y-%m-%d-%H-%M.log"; while(<>) { $fnamenew = strftime $fbase, localtime; if ($fnamenew ne $fname) { print "logging to: $fnamenew\n"; $fname = $fnamenew; close OUT; open OUT, ">$fname"; } print OUT $_; } в use POSIX qw(strftime); $fbase = "tmp-%Y-%m-%d-%H-%M.log"; while(<>) { $fnamenew = strftime $fbase, localtime; if ($fnamenew ne $fname) { print "logging to: $fnamenew\n"; $fname = $fnamenew; close OUT; open OUT, ">$fname"; } print OUT $_; } 

    Используйте его как: $mycomputation | perl script.pl $mycomputation | perl script.pl . Он будет добавлять все входные данные к имени файла, созданному из заданного шаблона времени, здесь tmp-YYYY-MM-DD-HH-MI.log . На каждой новой строке ввода шаблон перестраивается и проверяется на старый. Если он отличается, то вход передается в новый файл, а старый – закрыт.

    Interesting Posts

    Как использовать tshark для выполнения этой задачи

    Исключение нескольких шаблонов с помощью одной команды grep

    Может ли один пользователь иметь несколько файлов crontab?

    Как я могу получить доступ к сетевым файловым системам, которые я установил в Nautilus?

    Получить текущий уровень яркости экрана

    Вторая видеокарта не имеет выхода

    Linux – iptables – использование потоковых байтов YouTube

    Удаление строк путем сопоставления только 3-го и 4-го символов

    Есть ли способ выделить часть строки, где происходит ошибка

    Veritus Volume Manager perl недоступен

    В рабочем столе MATE контекстное меню правой кнопки мыши не по желанию

    Удалите учетную запись пользователя ex-admin и предоставите привилегии / разрешения / право собственности другому

    Есть ли способ отобразить все сценарии, вызываемые из другого скрипта?

    Как определить способ подключения, используемый клиентом MySQL?

    Переменные системной среды, не появляющиеся в sudo

    Linux и Unix - лучшая ОС в мире.