Re: γιατί μερικές φορές το ping αγνοεί την παράμετρο -i

Giorgos Keramidas keramida at ceid.upatras.gr
Tue Mar 20 17:40:08 EET 2012


2012/3/20 Nick Demou <ndemou at gmail.com>:
> 2012/3/20 Giorgos Keramidas <keramida at ceid.upatras.gr>:
>> 2012/3/20 Nick Demou <ndemou at gmail.com>:
>>> Έχει κανεις ιδέες ως προς το γιατί μερικές φορές όταν θέλω να κάνω
>>> ping με συχνότητα υψηλότερη από ένα ping ανά δευτερόλεπτο (π.χ. ping
>>> -i0.2) το ping με αγνοεί και συνεχίζει με το default 1 ping/sec?
>>> Μου έχει τύχει ακόμα και να κάνω ping -i0.2 hostname και να στέλνει
>>> ανα sec και ping -i0.2 ip-του-hostname και να στέλνει ανά 0.2sec!!!
>>> Άλλες φορές ξεκινά να στέλνει ανά 0.2sec και μετά από 100-200-500
>>> pings επιστρέφει μόνο του στο 1ping/sec.
>>
>> Το τρέχεις πάντα ως root ή μερικές φορές όχι;
>
> ναι όταν (σπάνια) ζητώ interval<0.2 το τρέχω σαν root
>
>> Αν όμως το τρέχεις ως root και στην αρχή στέλνει με συχνότητα
>> 1 πακέτο ανά 0.2s, αλλά _πέφτει_ αργότερα, τότε είναι bug.
>
> μου συμβαίνει και ακριβώς αυτό που περιγράφεις αλλά και να με αγνοεί
> εξ αρχής (ίσως όμως να είναι σε διαφορετικά μηχανάκια με άλλες
> εκδόσεις ping)
> any known workaround για το σύμπτωμα που αναφέρεις?

Μπορείς να σώσεις το παρακάτω σε ένα executable Perl script
π.χ. με όνομα 'tslog' και να τρέξεις μετά το ping έτσι;

    % sudo ping -i 0.1 -v 1.2.3.4 |& tslog | tee logfile

Θα πρέπει να δεις κάτι σαν αυτό:

$ sudo ping -i 0.1 localhost | tslog
2012-03-20 15:37:48.430557 - PING localhost (127.0.0.1) 60(88) bytes of data.
2012-03-20 15:37:48.430726 - 68 bytes from localhost (127.0.0.1):
icmp_seq=1 ttl=64 time=0.020 ms
2012-03-20 15:37:48.530569 - 68 bytes from localhost (127.0.0.1):
icmp_seq=2 ttl=64 time=0.026 ms
2012-03-20 15:37:48.630523 - 68 bytes from localhost (127.0.0.1):
icmp_seq=3 ttl=64 time=0.014 ms
2012-03-20 15:37:48.730509 - 68 bytes from localhost (127.0.0.1):
icmp_seq=4 ttl=64 time=0.010 ms
2012-03-20 15:37:48.830584 - 68 bytes from localhost (127.0.0.1):
icmp_seq=5 ttl=64 time=0.020 ms
2012-03-20 15:37:48.930556 - 68 bytes from localhost (127.0.0.1):
icmp_seq=6 ttl=64 time=0.020 ms
2012-03-20 15:37:49.029575 - 68 bytes from localhost (127.0.0.1):
icmp_seq=7 ttl=64 time=0.020 ms
2012-03-20 15:37:49.129565 - 68 bytes from localhost (127.0.0.1):
icmp_seq=8 ttl=64 time=0.019 ms
2012-03-20 15:37:49.229580 - 68 bytes from localhost (127.0.0.1):
icmp_seq=9 ttl=64 time=0.022 ms
2012-03-20 15:37:49.329585 - 68 bytes from localhost (127.0.0.1):
icmp_seq=10 ttl=64 time=0.021 ms
...

Οι χρόνοι έχουν διαφορά "περίπου" 0.1 seconds παραπάνω, αλλά θέλω
να δω *πόσο* περιμένει το ping όταν λες ότι καθυστερεί και τα rtt
times από τα προηγούμενα πακέτα.

# Source για το 'tslog' utiilty:
---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8<
----- 8< ----- 8< ----- 8< -----
#!/usr/bin/perl -wT
#
# A utility to timestamp logs.  Useful for piping the output of long
# running commands through it, before saving to a file.
#
# $Id: tslog,v 1.4 2006/03/30 15:00:49 giorgos Exp $

use strict;
use POSIX qw(strftime);
use Time::HiRes qw( gettimeofday );

my ($line, $microseconds, $now, $seconds, $tag);

if ($#ARGV == 0) {
    $tag = $ARGV[0] . " --- ";
} else {
    $tag = "";
}

$| = 1;
while (defined($line = <STDIN>)) {
    chomp $line;
    ($seconds, $microseconds) = gettimeofday;
    $now = strftime "%Y-%m-%d %H:%M:%S", gmtime($seconds);
    printf "%s%s.%06d - %s\n", $tag, $now, $microseconds, $line;
}
---- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8<
----- 8< ----- 8< ----- 8< -----



More information about the Linux-greek-users mailing list