![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| tail-f | wannalearn | Shell-programmering och Skript | 4 | 04-10-2007 06:22 |
| Tail? | qfwfq | Shell-programmering och Skript | 7 | 06-19-2006 02:15 |
| hur sed med svans | redlotus72 | UNIX for Dummies Frågor & Svar | 1 | 08-30-2005 06:27 |
| använder tail-f | cdunavent | Shell-programmering och Skript | 6 | 10-23-2002 06:10 |
| Slutgas User | bbutler3295 | UNIX for Dummies Frågor & Svar | 7 | 03-21-2002 06:47 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Hjälp på scripting använder svans
Hej, behöver hjälp här, jag har det här kommandot som jag behöver för att köra hela den dagen, i princip kommer detta att bara övervaka en loggfil och skriva en rad om Theres ett fel.
tail-f L * | grep "är död" detta kommer att upprepa en rad "*** är döda: RW [Signal w / Core dumpfilen: 10] ***" när ett program som loggar en död processen fel. vad jag behöver är att lägga till ett kommando som ska köras varje gång en rad grep. kan någon här hjälpa mig. kanske dess något som ser ut så här men jag vet inte syntaxen. tail-f L * | grep "är död"-exec mailx "BLAH BLAH" () \; kan någon hjälpa mig? |
|
||||
|
tack för länken ranj Kod:
#! /bin/ksh
curr_date = `date "+%m.%d"`
file=/datamart/logs/LOG.`date "+%m.%d"`
tail -f $file |&
while read -p err_line;
do [[ $err_line = "*** PROCESS IS DEAD: RW [Signal w/ Core dump: 10] ***" ]] && {
echo "mailx scripts goes here"
}
done
Jag vet alltför litlle av scripting, så jag skulle vilja fråga om ni kan hjälpa mig felsöka denna kod. koden ovan fungerar, eftersom hela anges, men jag vill bara ha ett mönster stämmer inte ett absolut matchen i rad så jag skulle vilja ändra det till "* är DÖD *" men inte fungerar. Kan du hjälpa mig med detta? hur mönstermatchning arbetet med manus? samt ytterligare en viktig sak, jag vill lägga till som du kan se min Loggfilen heter LOG.MM.DD där MM är månaden och DD är dagen. Hur kan jag lägga till ett nummer i skriptet att göra tail kommando stannar och startar igen på 12:05 (när loggfilen namn kommer att ändras). grunden jag tänkte att ändra medan en del att medan läs-p err_line & & curr_date \u003d "date" +% m% d `" och sedan lägga hela koden på en slinga. så jag var thinkng byte av skript från det ovan så här: Kod:
#! /bin/ksh
do
curr_date = `date "+%m.%d"`
file=/datamart/logs/LOG.`date "+%m.%d"`
tail -f $file |&
while read -p err_line && curr_date = `date "+%m.%d"`;
do [[ $err_line = "*PROCESS IS DEAD*" ]] && {
echo "mailx scripts goes here"
}
done
done
men inte fungerar, kan ni hjälpa mig att rätta till detta? |
|
||||
|
Prova så här! Osäker om det är effektivt.
medan läs-p err_line göra echo $ err_line | grep "mönster" & & echo "mailx skript går här" gjord Vid byte av tidsstämpel i loggfil kan du kontrollera om den tid i denna loop och avsluta den efter 00:00 och därefter börja loopen igen. Se om detta fungerar för dig. Du kan fånga pid av bakgrundskorrigerade jobb och dödar det innan du flytta den loggfil namn, men se till att du har många fel kontrollera i skriptet. Jag gjorde det under så här. men sant # de viktigaste loop göra tail-f $ loggfil | & medan läs-p linje göra job_id \u003d $! # få bakgrunden jobb process id echo $ line | grep "mönster" & & echo "mailx skript går här" om [[ "datum +% H"-lt 1-en "datum +% M`-gt 5]]; sedan # kontrollera om din temne break; # bryta ut från loop fi gjord kill $ job_id # döda id sova 5 # vänta på någon för att döda för att slutföra sin talan. loggfil \u003d "$ LOG/May_19.log" # flytta loggfil gjord Senast redigerad av ranj @ chn; 05-19-2006 vid 03:08.. |