|
|
|
|
Google Site
|
|||||||
| Φόρουμ | Εγγραφή | Ιστολόγιο | Man Σελίδες | Κανόνες Φόρουμ | Σύνδεσμοι | Λευκώματα | Συχνές ερωτήσεις | Χρήστες | Ημερολόγιο | Αναζήτηση | Η σημερινή Θέσεις | Mark Forums Read |
| Ο προγραμματισμός και η Shell Scripting Post ερωτήσεις για KSH, CSH, SH, BASH, Perl, PHP, sed, AWK ΑΛΛΑ και shell scripts και shell scripting γλώσσα εδώ. |
![]() |
|
|
Εργαλεία Θέματος | Αναζήτηση αυτό το νήμα | Βαθμολογήστε Νήμα | Display Modes |
|
|||
|
Επιδόσεις log parsing shell script πολύ αργή
Γειά, Είμαι απόλυτη newbie και ό, τι έχω γράψει στο σενάριο κέλυφος (παρακάτω) Όλα αυτά έχουν κατασκευαστεί με τη γενναιόδωρη βοήθεια από googling το καθαρό και αυτό το φόρουμ. Παρακαλώ συγχωρήστε κάθε μαθητής λάθη. Τώρα για το qn, αρχείο εισόδου μου μοιάζει με αυτό -- 2009:04:03 08:21:41:513, INFO, όνομα_διακομιστή, εεεε, απροσδιόριστο,, INFO, null ,..... Out: xxService, Έναρξη - SvcName: OIS - EndUserName: - RequestId: null20090403082313 2009:04:03 08:21:41:775, INFO, όνομα_διακομιστή, εεεε, απροσδιόριστο,, INFO, null ,..... Out: xxService, End - SvcName: OIS - EndUserName: - RequestId: null20090403082313 - StatusCode: 0 - StatusText: Επιτυχία 2009:04:03 08:21:45:660, INFO, όνομα_διακομιστή, εεεε, απροσδιόριστο,, INFO, null ,..... Out: xxService, Έναρξη - SvcName: VCC - EndUserName: - RequestId: 411111111111111120090403082318 2009:04:03 08:21:46:171, INFO, όνομα_διακομιστή, εεεε, απροσδιόριστο,, INFO, null ,..... Out: xxService, End - SvcName: VCC - EndUserName: - RequestId: 411111111111111120090403082318 - StatusCode: 0 - StatusText: Επιτυχία 2009:04:03 08:21:49:583, INFO, όνομα_διακομιστή, εεεε, απροσδιόριστο,, INFO, null ,..... Out: xxService, Έναρξη - SvcName: CO - EndUserName: - RequestId: 20090403082321 2009:04:03 08:22:03:571, INFO, όνομα_διακομιστή, εεεε, απροσδιόριστο,, INFO, null ,..... Out: xxService, End - SvcName: CO - EndUserName: - RequestId: 20090403082321 - StatusCode: 0 - StatusText: Επιτυχία Από αυτό που έχω να μάθω την ώρα resp (ώρα έναρξης - ώρα λήξης) για κάθε αίτηση για την id SvcName ΣΙΑ έχω γράψει αυτό το σενάριο κελύφους (δεν έχει τελειώσει και αν), ωστόσο η επίδοση είναι πολύ αργή (διαρκεί ένα λεπτό για να επεξεργαστεί ένα 100 γραμμή του αρχείου). Σας παρακαλώ σημείο μου προς τη σωστή κατεύθυνση για τη βελτίωση των επιδόσεων; Αν και δεν το ακριβές αντικείμενο αυτής της θέσης, εφόσον υπάρχουν δείκτες μπορεί να δοθεί για τον υπολογισμό της διαφοράς μεταξύ της έναρξης και λήξης του χρόνου, θα είναι πολύ χρήσιμη. Κωδικός:
#!/bin/bash
#script to resptime timings for CO call from logfile
#////////////////////////////////////
#if no command line args
if [ $# -ne 1 ]
then
echo 1>&2"Oops......Usage is wrong. $0 <tgtsrchfile>"
exit 2
fi
#assigning command line params to variables
srchFN=$1
#remove resptime.log if already present
checkfile="./resptime.log"
tempfile="./temp.log"
tempfile1="./temp1.log"
if [ -e $checkfile ];then
rm -r $checkfile
fi
if [ -e $tempfile ];then
rm -r $tempfile
fi
if [ -e $tempfile1 ];then
rm -r $tempfile1
fi
#if keywordfile not present
if [ ! -r $srchFN ]; then
echo Target search file $srchFN not present
exit 2
fi
#grep for request id
grep 'Start.*CO' $srchFN | awk -F "RequestId: " '{print $2}'>temp.log
#for each request id get starttime and end time and print into temp file
cat temp.log | while read line; do
#if string is empty
if [ -n $line ];then
sttime=`grep Start.*CO.*$line $srchFN | awk -F "," '{print $1}'|awk -F " " '{print $2}'`
endtime=`grep End.*CO.*$line $srchFN | awk -F "," '{print $1}'|awk -F " " '{print $2}'`
if [ -n "$sttime" -o -n "$endtime" ];then
echo $line,$sttime,$endtime>>temp1.log
fi
fi
done;
#/////////////////////////////////////Ευχαριστώ εκ των προτέρων Τελευταία επεξεργασία από το Jim McNamara? 04-08-2009 σε 10:51 AM.. Αιτιολογία: code tags |
| Sponsored Links | ||
|
|
|
|||
|
Αρχείο εισόδου μου έχει μία γραμμή για την έναρξη της αίτησης και ένα για το τέλος της αίτησης. Και υπάρχουν εκατοντάδες μοναδικά αιτήσεων. Είμαι, λοιπόν, που αγωνίζονται να σκεφτώ πώς αλλιώς μπορώ να πάρω την ώρα έναρξης και λήξης με ένα grep, για κάθε req id ...
|
|
||||
|
κάτι σαν αυτό; υποκατάστατο «d» για το αρχείο καταγραφής σας: Κωδικός:
cat d |
while read line ; do
#----------------------------------------------------------------------#
# Start time and service name. #
#----------------------------------------------------------------------#
if [[ $line = *Service,Start* ]] ; then
echo $line |
sed -e 's/^.*SvcName: //' -e 's/ - .*$//' |
read service_name
echo $line |
sed -e 's/,INFO.*$//' |
read start_time
fi
#----------------------------------------------------------------------#
# End time. #
#----------------------------------------------------------------------#
if [[ $line = *Service,End*SvcName*$svcname*EndUser* ]] ; then
echo $line |
sed -e 's/,INFO.*$//' |
read end_time
echo start-time $start_time end-time $end_time service-name $service_name
fi
done |
|
||||
|
btw - ότι θα εργάζονται πραγματικά μόνο αν κάθε αίτημα έχει ένα τέλος χρόνο ρεκόρ το αμέσως μετά. αν αυτό δεν συμβαίνει, τότε επιτρέψτε μου να ξέρω.
υπάρχει ένα άλλο τέχνασμα που θα πρέπει να χρησιμοποιήσετε για να preprocess το αρχείο καταγραφής. Ειδικότερα, δημιουργώντας ένα βασικό χρησιμοποιώντας το svcname και "Υπηρεσία" Έναρξη "" Υπηρεσία, End " και διαλογή ASC, DESC με βάση αυτό το κλειδί. Συνέχεια επεξεργασία του αρχείου ξανά χρησιμοποιώντας παραπάνω script μου. |
|
||||
|
Θα ήθελα να χρησιμοποιήσει Perl να υπολογίσει την ημερομηνία και την ώρα διαφορές (χρησιμοποιώντας μια εξωτερική μονάδα Ημερομηνία:: Manip): Κωδικός:
#!/usr/bin/perl
use warnings;
use strict;
use Date::Manip;
my $infile = 'file';
open FH, $infile or die "$infile: $!";
my ( $sdate, $edate, $delta, $err, $ustart, $uend, $rtime );
while (<FH>) {
if (/SvcName: CO/) {
/Start -/ and ( $sdate = ( split ',' )[0] ) =~ s|:(.*?):|/$1/|;
/End -/ and ( $edate = ( split ',' )[0] ) =~ s|:(.*?):|/$1/|;
}
if ( $sdate && $edate ) {
$ustart = UnixDate( $sdate, "%s" );
$uend = UnixDate( $edate, "%s" );
if ($edate) {
$rtime = $ustart - $uend;
print $sdate, " - ", $edate, "\n";
print DateCalc( $sdate, $edate, \$err ), "\n";
}
}
}Με δεδομένα το δείγμα σας που παράγει το ακόλουθο αποτέλεσμα: Κωδικός:
% cat file 2009:04:03 08:21:41:513,INFO ,servername,yyyy,undefined,,INFO,null,.....Out:xxService,Start - SvcName: OIS - EndUserName: - RequestId: null20090403082313 2009:04:03 08:21:41:775,INFO ,servername,yyyy,undefined,,INFO,null,.....Out:xxService,End - SvcName: OIS - EndUserName: - RequestId: null20090403082313 - StatusCode: 0 - StatusText: Success 2009:04:03 08:21:45:660,INFO ,servername,yyyy,undefined,,INFO,null,.....Out:xxService,Start - SvcName: VCC - EndUserName: - RequestId: 411111111111111120090403082318 2009:04:03 08:21:46:171,INFO ,servername,yyyy,undefined,,INFO,null,.....Out:xxService,End - SvcName: VCC - EndUserName: - RequestId: 411111111111111120090403082318 - StatusCode: 0 - StatusText: Success 2009:04:03 08:21:49:583,INFO ,servername,yyyy,undefined,,INFO,null,.....Out:xxService,Start - SvcName: CO - EndUserName: - RequestId: 20090403082321 2009:04:03 08:22:03:571,INFO ,servername,yyyy,undefined,,INFO,null,.....Out:xxService,End - SvcName: CO - EndUserName: - RequestId: 20090403082321 - StatusCode: 0 - StatusText: Success zsh-4.3.9[t]% ./s 2009/04/03 08:21:49:583 - 2009/04/03 08:22:03:571 +0:0:0:0:0:0:14 |
| Sponsored Links | ||
|
|
![]() |
| Σελιδοδείκτες |
| Εργαλεία Θέματος | Αναζήτηση αυτό το νήμα |
| Display Modes | Βαθμολογήστε αυτό το νήμα |
|
|
Περισσότερα UNIX και Linux Forum Θέματα που μπορεί να σας Χρήσιμη
|
||||
| Νήμα | Thread Starter | Φόρουμ | Απαντήσεις | Τελευταίο μήνυμα |
| FTP τρέχει από shell script δίνει αργή μεταβίβαση ποσοστών | Countificus | Ο προγραμματισμός και η Shell Scripting | 8 | 04-07-2009 05:50 μμ |
| Shell script parsing για να συνδεθείτε | justbow | Ο προγραμματισμός και η Shell Scripting | 10 | 12-06-2008 03:20 μμ |
| egrep είναι πολύ αργή: Πώς να βελτιώσει τις επιδόσεις | hidnana | Ο προγραμματισμός και η Shell Scripting | 7 | 02-12-2008 07:13 AM |
| Βοήθεια! Χαμηλές επιδόσεις | Νέο | Post εδώ για να επικοινωνήσετε Site Administrators και Moderators | 6 | 08-25-2003 04:08 μμ |