Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: sodom в Jul 12, 2005, 08:59



Титла: триене на лог
Публикувано от: sodom в Jul 12, 2005, 08:59
хай,
някой може ли да даде идея как мога да трия определени редове от файл които започват с даден низ.
а като ги изтрия на тяхно място да не стои дупка а да си се съединят другите редове. става дума за един лог, от който да мога да трия (щото на ръка ми отнема много време) а той да продължава да си функционира като лог (т.е. да си се ъпдейтва)
много благодарности на този който ми отговори


Титла: триене на лог
Публикувано от: VladSun в Jul 12, 2005, 09:54
cat xxxxx.log | grep -v "fraza za tarsene" > xxxxx.log


Титла: триене на лог
Публикувано от: в 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 в 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


Титла: триене на лог
Публикувано от: в 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 тънкости ;)


Титла: триене на лог
Публикувано от: в Jul 12, 2005, 11:34
Цитат (Guest @ Юли 12 2005,12:01)
...cat xxxxx.log > cat xxxxx.log.tmp....

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


Титла: триене на лог
Публикувано от: laskov в Jul 12, 2005, 11:52
, но някои програми може и да не пишат в новия файл.


Титла: триене на лог
Публикувано от: VladSun в 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 места ....


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


Титла: триене на лог
Публикувано от: VladSun в 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.


Титла: триене на лог
Публикувано от: laskov в Jul 13, 2005, 10:03
Цитат (laskov @ Юли 12 2005,12:52)
, но някои програми може и да не пишат в новия файл.

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


Титла: триене на лог
Публикувано от: rpetrov в 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 в Jul 13, 2005, 11:07
Честно казано,  едно време ми хрумна това, но след пробите не видях проблеми и останах щастлив :)

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

Мерси, rpetrov!

"!!" твоето решение вече звучи доста по-подбре от моето ;)


Титла: триене на лог
Публикувано от: rpetrov в 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 му се иска да поприкрие някои следи :-)