Повернуть вывод nohup
Я работаю с weblogic 10.3.5 под Ubuntu 12.04.
Weblogic начал использовать
nohup ./startWebLogic.sh >Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.out 2>&1 </dev/null &
Работает нормально и теперь хотелось бы повернуть AdminServer.out
с помощью logrotate
но, кажется, это не так просто сделать. Поиск в интернете не очень понятно, если это возможно или нет.
Я пытался использовать copytruncate
опции. Когда выполняется logrotate, размер файла становится равным 0, но возвращается к исходному размеру после первой "записи" сервера.
Также попытался переименовать файл. Сервер все еще пишет в переименованный файл.
Кажется, на сервере есть только указатель на файл, независимо от его имени или размера.
Итак... есть ли решение? Используя логротейт или нет.
--РЕДАКТИРОВАТЬ--
Я тоже пробовал с
#!/bin/bash
mkdir -p tmp
if [ ! -p tmp/weblogic.fifo ]; then
mkfifo tmp/weblogic.fifo
fi
tail -f tmp/weblogic.fifo >> Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.out &
nohup ./startWebLogic.sh > /home/me/tmp/weblogic.fifo 2>&1 </dev/null &
Я не знаю, правильно ли это, но... есть, по крайней мере, одна проблема: иногда зависает запись в файл. Иногда несколько секунд, но через некоторое время (даже до запуска сервера) ... на неопределенный срок!
Поэтому я не могу проверить logrotate.
2 ответа
Решение было в конечном итоге так просто
nohup ./startWebLogic.sh 2>&1 </dev/null | cat >> AdminServer.out &
а теперь AdminServer.out
может вращаться с logrotate
и copytruncate
вариант.
Отучить необходимость logrotate
, Вам не нужно logrotate
на первом месте. Эта проблема решается с середины 1990-х годов.
Получить себе один или несколько из:
- Дэн Бернштейн
multilog
из daemontools, или Брюса Гюнтераmultilog
из daemontools-бис, или Адама Сэмпсонаmultilog
от Фридта или - Лоран Берко
s6-log
из с6 или - Геррит Папе
svlogd
из рунита или - Уэйна Маршалла
tinylog
из преступника, или - мой
cyclog
из ничего
и отправить стандартный вывод скрипта и стандартную ошибку через канал на их стандартный ввод обычным способом:
./startWebLogic.sh 2> & 1 | журналы циклов /
Они будут записывать набор автоматически циклических, вращающихся по требованию и строго ограниченных по размеру журналов в каталог, который вы укажете, без каких-либо дополнительных программ ротации журналов вообще. Ни одному из них не нужны какие-либо привилегии суперпользователя. (На самом деле, далеко не требуя или не ожидая привилегий суперпользователя, в их наиболее широко известном сценарии, регистрирующем выходные данные демона, рекомендуется запускать их под непривилегированными учетными записями.)
дальнейшее чтение
- Джонатан де Бойн Поллард (2016). Не используйте logrotate или newsyslog в этом веке., Часто задаваемые ответы.