URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 84543
[ Назад ]

Исходное сообщение
"Как обнулить файл, открытый другим процессом"

Отправлено fa , 18-Мрт-09 12:25 
Всем привет.
Есть процесс, работающий в фоновом режиме. Пишет постоянно в свой лог, не закрывая его. Встала задача время от времени этот лог обнулять. Попробовал cp /dev/null > file.log. Не работает. Размер файла не изменяется. Как победить без перезапуска процесса?
Заранее спасибо.



Содержание

Сообщения в этом обсуждении
"Как обнулить файл, открытый другим процессом"
Отправлено Andey , 18-Мрт-09 12:37 
А так
> file.log

"Как обнулить файл, открытый другим процессом"
Отправлено Andey , 18-Мрт-09 12:50 
cp /dev/null > file.log
Да, и эта комманда у вас не выдает никакой ошибки?

"Как обнулить файл, открытый другим процессом"
Отправлено Pahanivo , 18-Мрт-09 13:15 
>cp /dev/null > file.log
>Да, и эта комманда у вас не выдает никакой ошибки?

я бы спросил "что это вообще за команда" )))
в чем ее глубинный смысл )))


"Как обнулить файл, открытый другим процессом"
Отправлено zd3n , 18-Мрт-09 13:17 
На своих БД(Sybase ASE) лог файлы режу стандартно:

cat /dev/null > /opt/sybase/YOUSERVERLOG.log

Именно cat, а не cp.


"Как обнулить файл, открытый другим процессом"
Отправлено Sarge , 18-Мрт-09 14:47 
А что за процесс? Может он сам умеет переоткрывать свои логи?



"Как обнулить файл, открытый другим процессом"
Отправлено met3x , 18-Мрт-09 17:13 
>Всем привет.
>Есть процесс, работающий в фоновом режиме. Пишет постоянно в свой лог, не закрывая его. Встала задача время от времени этот лог обнулять. Попробовал cp /dev/null > file.log. Не работает. Размер файла не изменяется. Как победить без перезапуска процесса?
>Заранее спасибо.

А стоит ли его обнулять? может стоить взглянуть в сторону logrotate.


"Как обнулить файл, открытый другим процессом"
Отправлено met3x , 18-Мрт-09 17:29 
з.ы. а так пробовал: cat /dev/null > log.txt //взято с Advanced Bash-Scripting Guide


"Как обнулить файл, открытый другим процессом"
Отправлено fa , 19-Мрт-09 11:20 
Небольшой апдейт:
С 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


"Как обнулить файл, открытый другим процессом"
Отправлено chrome , 20-Мрт-09 07:12 
а вот так пробовал:
echo -n > file.log
или
:> file.log



"Как обнулить файл, открытый другим процессом"
Отправлено Sarge , 20-Мрт-09 09:30 
>Процесс, который пишет в файл - tcpdump:
>tcpdump -nn -A -s0 -w /var/log/traflog/traf.log host x.x.x.x

man 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).

...


"Как обнулить файл, открытый другим процессом"
Отправлено fa , 20-Мрт-09 11:43 
Огромное спасибо.