Рейтинг:0

Разблокировать файл журнала, заблокированный другим процессом Linux

флаг ng

Я написал скрипт для очистки/обнуления файла журнала один раз в день на моем сервере Ubuntu.

Путь к файлу журнала: /var/журнал/turn.log

Я пробовал следующие команды для этой цели:

Команды: sudo cp /dev/null /var/log/turn.log sudo truncate -s 0 /var/log/turn.log

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

$ sudo fuser /var/log/turn.log
/var/log/turn.log : 964 
$ пс 964
КОМАНДА СТАТИСТИЧЕСКОГО ВРЕМЕНИ PID TTY

964 ? SSL 0:54 /usr/bin/turnserver -c /etc/turnserver.conf -o -v
$

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

bac0n avatar
флаг cn
думаю, вы хотите сделать `sudo sh -c '> /var/log/turn.log'`
Soren A avatar
флаг mx
Почему бы вам не использовать для этого стандартную утилиту logrotate? Он уже установлен и настроен (в /etc/logrotate.conf и /etc/logrotate.d). См. `man logrotate`. Также имейте в виду, что если процесс имеет открытый файл журнала, данные не будут удалены с диска, пока процесс не закроет файл.
bac0n avatar
флаг cn
`killall -HUP turnserver` должен перечитать файл журнала.
Рейтинг:2
флаг cn

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

Остановите TurnServer, прежде чем вы это сделаете

sudo cp /dev/null /var/log/turn.log 
sudo truncate -s 0 /var/log

и запустите его после того, как это будет сделано. Если поддерживается, возможен только перезапуск после очистки файла. я бы использовал > /var/log/turn.log как root или из crontab как root; но это также сохраняет файл как есть, пока он не будет выпущен. Обрезать не нужно.

Помимо изменения turnever, чтобы не блокировать файл все время (используя службу, я бы блокировал файл, когда это необходимо, и где-то в цикле закрывал/повторно открывал журнал), более общий метод состоял бы в том, чтобы добавить журнал в logrotate и иметь дело с logrotate. это: сжать файл и удалить сжатые файлы, если они старше x дней. Turnserver никогда не затрагивает эти старые журналы.

Cyrus avatar
флаг cn
`sudo > /var/log/turn.log` имеет неверный синтаксис.
Рейтинг:0
флаг kr

Попробуйте эту командную строку, она должна заменить ваш старый файл журнала новым пустым. Старый файл журнала будет иметь *.старый расширение файла.

sudo cp -a --attributes-only /var/log/turn.log /var/log/turn.log.new &&\
sudo ln -f /var/log/turn.log /var/log/turn.log.old &&\
sudo ln -f /var/log/turn.log.new /var/log/turn.log &&\
sudo unlink /var/log/turn.log.new && sync ||\
echo "Ошибка: что-то пошло не так."

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.