Автор Тема: триене на лог  (Прочетена 1251 пъти)

sodom

  • Участници
  • ***
  • Публикации: 7
    • Профил
триене на лог
« -: Jul 12, 2005, 08:59 »
хай,
някой може ли да даде идея как мога да трия определени редове от файл които започват с даден низ.
а като ги изтрия на тяхно място да не стои дупка а да си се съединят другите редове. става дума за един лог, от който да мога да трия (щото на ръка ми отнема много време) а той да продължава да си функционира като лог (т.е. да си се ъпдейтва)
много благодарности на този който ми отговори
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
триене на лог
« Отговор #1 -: Jul 12, 2005, 09:54 »
cat xxxxx.log | grep -v "fraza za tarsene" > xxxxx.log
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

  • Гост
триене на лог
« Отговор #2 -: Jul 12, 2005, 11:01 »
Цитат (VladSun @ Юли 12 2005,10:54)
cat xxxxx.log | grep -v "fraza za tarsene" > xxxxxx.log

cat xxxxx.log > cat xxxxx.log.tmp
grep -v "fraza za tarsene" xxxxx.log.tmp > xxxxxx.log
rm -f xxxxx.log.tmp
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
триене на лог
« Отговор #3 -: Jul 12, 2005, 11:14 »
Цитат (Guest @ Юли 12 2005,12:01)
Цитат (VladSun @ Юли 12 2005,10:54)
cat xxxxx.log | grep -v "fraza za tarsene" > xxxxxx.log

cat xxxxx.log > cat xxxxx.log.tmp
grep -v "fraza za tarsene" xxxxx.log.tmp > xxxxxx.log
rm -f xxxxx.log.tmp

grep -v "fraza za tarsene" xxxxx.log > xxxxxx.log.tmp
mv xxxxxx.log.tmp xxxxxx.log
Активен

0x2B|~0x2B

  • Гост
триене на лог
« Отговор #4 -: Jul 12, 2005, 11:30 »
ako xxxxxx.log е символна връзка това:
Цитат (romeo_ninov @ Юли 12 2005,12:14)
grep -v "fraza za tarsene" xxxxx.log > xxxxxx.log.tmp
mv xxxxxx.log.tmp xxxxxx.log

я чупи (създава се нов файл вместо да се запише в указания).

същото важи за:
Цитат
mv xxxxxx.log xxxxxx.log.tmp
grep ... xxxxxx.log.tmp > xxxxxx.log



unix тънкости '<img'>
Активен

  • Гост
триене на лог
« Отговор #5 -: Jul 12, 2005, 11:34 »
Цитат (Guest @ Юли 12 2005,12:01)
...cat xxxxx.log > cat xxxxx.log.tmp....

вярното е
cat xxxxx.log > xxxxx.log.tmp
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
триене на лог
« Отговор #6 -: Jul 12, 2005, 11:52 »
, но някои програми може и да не пишат в новия файл.
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
триене на лог
« Отговор #7 -: Jul 12, 2005, 15:33 »
Цитат (Guest @ Юли 12 2005,110)
Цитат на: VladSun,Юли 12 2005,10:54
cat xxxxx.log | grep -v "fraza za tarsene" > xxxxxx.log

cat xxxxx.log > cat xxxxx.log.tmp
grep -v "fraza za tarsene" xxxxx.log.tmp > xxxxx.log
rm -f xxxxx.log.tmp

Какъв е проблема с моето решение (ако не е симв. връзка) ?
Ползвам подобно нещо поне на 3-4 места ....
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

  • Гост
триене на лог
« Отговор #8 -: Jul 12, 2005, 16:42 »
При
cat xxxxx.log | grep -v "fraza za tarsene" > xxxxx.log
не се ли получава файл с размер 0 ?
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
триене на лог
« Отговор #9 -: Jul 12, 2005, 20:29 »
не

Ако беше:

grep -v "fraza" xxxx.log > xxxx.log щеше да е 0

grep -V
grep (GNU grep) 2.5

cat --version
cat (GNU textutils) 2.0
Written by Torbjorn Granlund and Richard M. Stallman.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
триене на лог
« Отговор #10 -: Jul 13, 2005, 10:03 »
Цитат (laskov @ Юли 12 2005,12:52)
, но някои програми може и да не пишат в новия файл.

Някъде бях чел, че някои програми, след като отворят веднъж лог файла, в който пишат, след това вече работят с неговия INODE и ако например изтриете файла и създадете нов със същото име, ще трябва да рестартирате програмата, за да започне да пише в новия файл. При мен това стана с Cyrus IMAP.
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
триене на лог
« Отговор #11 -: Jul 13, 2005, 10:38 »
VladSun, как се гарантира, че се чете преди да се запише ?

Една лека модифицация забавяща четенето праща нещата в небитието:
(sleep 1; cat xxxxx.log) | grep -v fraza > xxxxx.log
или пък така:
(sync; cat xxxxx.log) | grep -v fraza > xxxxx.log
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
триене на лог
« Отговор #12 -: Jul 13, 2005, 11:07 »
Честно казано,  едно време ми хрумна това, но след пробите не видях проблеми и останах щастлив '<img'>

Но май ще трябва да ревизирам всички скриптове дали не е станало гаф някъде '<img'>

Мерси, rpetrov!

"!!" твоето решение вече звучи доста по-подбре от моето '<img'>
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
триене на лог
« Отговор #13 -: Jul 13, 2005, 16:20 »
Цитат (laskov @ Юли 13 2005,10:03)
...Някъде бях чел, че някои програми, след като отворят веднъж лог файла, в който пишат, след това вече работят с неговия INODE и ако например изтриете файла и създадете нов със същото име, ще трябва да рестартирате програмата, за да започне да пише в новия файл. При мен това стана с Cyrus IMAP.

Дали точно се ползва INODE незнам - не съм се зачитал/заравял/... навътре из ... :) . Знам, че ако програмата е отворила файл, то тя ще може да пише в него докато той съществува в файловата система, т.е. промяна на името/"правата за достъп(?)" не влияе върху работоспособността.


Примерно за syslog

mv /var/log/messages /var/log/messages.tmp
# syslogd е отворил файла /var/log/messages и ще продължи
# да записва в него, независимо че е със сменено име.
(обработка на .../messages.tmp) > .../messages

Следва рестартиране на syslog, за да започне да пише в /var/log/messages

Е ако файла е символна връзка, се намира "истинския файл" и процедурата е ясна.


П.П.: явно на sodom му се иска да поприкрие някои следи :-)
Активен