![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| tail-f | wannalearn | Programmeren en Shell Scripting | 4 | 04-10-2007 06:22 PM |
| Staart? | qfwfq | Programmeren en Shell Scripting | 7 | 06-19-2006 02:15 |
| tail commando .. | Amon | Programmeren en Shell Scripting | 2 | 06-02-2006 05:36 |
| Hulp bij het uitvoeren van scripts met behulp van de staart | JISC | Programmeren en Shell Scripting | 4 | 05-19-2006 04:15 |
| hoe sed met staart | redlotus72 | UNIX voor Dummies Questions & Answers | 1 | 08-30-2005 06:27 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Werken in HP-UX 10.20. Ik uiteindelijk wil schrijven een Bourne shell script naar het volgende probleem aan te pakken, maar voor nu ben ik gewoon spelen met het op de opdrachtregel.
Hier is wat ik eigenlijk probeer te doen: tail-f log_X | grep n> log_Y Ik ben bezig met een tail-f op log_X. Zodra het ziet "n", wil ik voor het aan grep, dan zet het in log_Y. Het is niet waardoor het aan log_Y. Ik heb handmatig toevoegen van "n" te log_X, en de staart commando is zeker te zien, maar het niet doorgeven aan log_Y. Waarom? Is dat omdat de opdracht probeert te "volledige" tail-f voordat het de> (redirect uitvoert) om log_Y?? Is er een betere manier om deze aanpak? TYIA |
|
||||
|
Probeer met behulp van
tail-f log_X | grep n >> log_Y Ik weet niet of dit zou werken ... Ik kan hieraan toevoegen dat de commando's aan weerszijden van een pijp "|" zijn gestart en synchroon uitgevoerd ... en we weten dat elke opdracht als grep zal eindigen als zij ziet een EOF, dat niet "tail-f" zal geven als het in een oneindige lus op zoek naar nieuwe lijnen toegevoegd ... dus ... tail-f log_X | grep n moeten werken prima en het geven van 'nieuwe' lijnen met "n" naar stdout als en wanneer ze toevoegen aan log_x ... Het kan een probleem met omleiding, dus omleiding gebruik in append mode >> en laat het ons weten! Sante! Vishnoe. |
|
||||
|
Vishnu:
Ik probeerde met behulp van tail-f log_X | grep n>> log_Y gisteren ... het werkte niet. Ik heb ook geprobeerd een tail-f log_X | grep n>! log_Y. No go. De reden waarom ik ben using tail-f is omdat ik dit wil een "real-time monitor". Eenmaal "n" verschijnt, ik moet het aan mij melden. Elke andere ideeën? TYIA |
|
||||
|
zie deze posten .. Het lijkt erop dat leidingen "tail-f" werkt met een aantal besturingssystemen en werkt niet met een aantal ...
http://www.computing.net/solaris/www...orum/1734.html http://www.zsh.org/mla/users/1999/msg00360.html u niet vertellen of ... tail-f log_X | grep n werkte op uw systeem .. dat wil zeggen, zie je de spullen op je terminal .. Sante! Vishnoe. |
|
|||||
|
Probeer dit: Code:
(tail -f /var/log/messages & ) | grep -i login Als je staart laten draaien in de backgroundit laat grep werk. Zoals staart dumps naar stdout, is grep geduldig wachten, het lezen van stdin. Dit zal net buiten dumpen op uw scherm totdat je iets hit Ctrl + C. Als je iets meer willen werken, zou je stuurde de staart output naar een andere fd, en hebben grep gelezen van die fd. Succes! |
|
|||||
|
Oh heck, waarom niet - hier is een licht verbeterde ontwerp. Voer het in de achtergrond, en het zal schrijven de gebruiker hierboven omschreven bij het zien van de exacte woordcombinatie (ook hierboven omschreven). Het is niet de pertiest, en waarschijnlijk niet de snelste als de logs groeit zeer snel, maar het werkt, en het is gemakkelijk aan te passen om mail, pagina, whatever ... Wees voorzichtig dat het niet overstroming u uit als het dezelfde boodschap honderden keren vondsten ... Code:
#! /bin/ksh
search_word="search terms"
write_user=user_id
tail -n1 -f /path/to/log |&
while read -p output_line; do
[[ $output_line == *"$search_word"* ]] && {
print "$output_line" | write $write_user
}
done
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|