Tail using PowerShell
07 Oct 2017| PowerShell
Considerați un scenariu în care diagnosticați o problemă pe un server de producție. Ați activat jurnalele și ați configurat totul pentru a reproduce problema. Puneți în coadă declanșatorul pentru a invoca operațiunea care se comportă greșit și, în cele din urmă, așteptați ca fișierul jurnal să se actualizeze.
Așteptarea modificării dimensiunii fișierului jurnal nu este amuzantă și nici reîmprospătarea periodică a fișierului. Vreau să fiu notificat în momentul în care jurnalul se actualizează în timp real. Aceasta este exact ceea ce face un program ca tail
– monitorizează fișierul pentru modificări și emite coada fișierului.
Există câteva întruchipări de coadă care fac treaba perfect, dar având în vedere că acesta era un mediu de producție, nu am ținut să instalez instrumente noi.
Din fericire, cmdlet-ul PowerShell Get-Content
are această funcționalitate încorporată. Aceasta este combinația pe care am stabilit-o în cele din urmă:
Get-Content log.txt -tail 5 -wait
Argumentul -tail
preia numărul de linii care trebuie afișate de la sfârșitul fișierului și -wait
specifică faptul că ar trebui să continue să monitorizeze fișierul.
Am admis că această metodă nu are capacitățile de evidențiere pe care le-ar avea un instrument dedicat, dar este o opțiune destul de utilă pentru a o avea la nevoie.
În cele din urmă, economisiți câteva apăsări de taste folosind aliasul:
cat log.txt -tail 5 -wait
Update 2019-01-30: Am avut recent cerința de a monitoriza un fișier pentru un anumit text și apoi să notez data și ora la care a fost scris. Se bazează pe această soluție sugerată:
cat .\processed-users.txt -tail 5 -wait | ? { $_ -like ‘SEARCH_STRING_HERE’ } | % { Write-Host $(Get-Date -Format T) -noNewLine -ForegroundColor Blue; Write-Host ” $_” }