Всем привет.
Есть процесс, работающий в фоновом режиме. Пишет постоянно в свой лог, не закрывая его. Встала задача время от времени этот лог обнулять. Попробовал cp /dev/null > file.log. Не работает. Размер файла не изменяется. Как победить без перезапуска процесса?
Заранее спасибо.
А так
> file.log
cp /dev/null > file.log
Да, и эта комманда у вас не выдает никакой ошибки?
>cp /dev/null > file.log
>Да, и эта комманда у вас не выдает никакой ошибки?я бы спросил "что это вообще за команда" )))
в чем ее глубинный смысл )))
На своих БД(Sybase ASE) лог файлы режу стандартно:cat /dev/null > /opt/sybase/YOUSERVERLOG.log
Именно cat, а не cp.
А что за процесс? Может он сам умеет переоткрывать свои логи?
>Всем привет.
>Есть процесс, работающий в фоновом режиме. Пишет постоянно в свой лог, не закрывая его. Встала задача время от времени этот лог обнулять. Попробовал cp /dev/null > file.log. Не работает. Размер файла не изменяется. Как победить без перезапуска процесса?
>Заранее спасибо.А стоит ли его обнулять? может стоить взглянуть в сторону logrotate.
з.ы. а так пробовал: cat /dev/null > log.txt //взято с Advanced Bash-Scripting Guide
Небольшой апдейт:
С cp /dev/null > file.log я ошибся, конечно.
Пробовал
cat /dev/null > file.log
cp /dev/null file.log
Вот и смешалось все в кучу.Процесс, который пишет в файл - tcpdump:
tcpdump -nn -A -s0 -w /var/log/traflog/traf.log host x.x.x.xСамое интересное, что файл все-таки затирается. Но потом "воскресает" опять :-)
# ls -lah; cat /dev/null > traf.log ; ls -lah; sleep 0.1; ls -lah
...
-rw-r--r-- 1 root root 48M Mar 19 09:08 traf.log
...
-rw-r--r-- 1 root root 0 Mar 19 09:08 traf.log
...
-rw-r--r-- 1 root root 48M Mar 19 09:08 traf.log
а вот так пробовал:
echo -n > file.log
или
:> file.log
>Процесс, который пишет в файл - tcpdump:
>tcpdump -nn -A -s0 -w /var/log/traflog/traf.log host x.x.x.xman tcpdump
SYNOPSIS
tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ]
[ -C file_size ] [ -F file ]
[ -i interface ] [ -m module ] [ -r file ]
[ -s snaplen ] [ -T type ] [ -w file ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ]
[ expression ]...
-C Before writing a raw packet to a savefile, check whether the file is currently larger than file_size and, if so, close the current savefile and open a new one. Savefiles after the first savefile will have the name specified with the -w flag, with a number after it, starting at 2 and continuing upward. The units of file_size are millions of bytes (1,000,000 bytes, not 1,048,576 bytes).
...
Огромное спасибо.