概要
以下、個人用メモです。忘れないうちにメモメモ。。
ping
コマンドには -D
というオプションがあって、これを指定するとタイムスタンプを出力してくれます。
ただ、この出力内容がヘルプ見ると以下のようになっています。
以下、ping(8) の man より抜粋
-D Print timestamp (unix time + microseconds as in gettimeofday) before each line.
なので、以下のような出力となります。
$ ping -c 3 -D google.co.jp PING google.co.jp (216.58.197.227) 56(84) bytes of data. [1621168200.486448] 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=1 ttl=113 time=41.1 ms [1621168201.502384] 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=2 ttl=113 time=54.7 ms [1621168202.940270] 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=3 ttl=113 time=489 ms --- google.co.jp ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 41.084/195.071/489.418/208.208 ms
うーん、後から見直したときにパッと分からないですね・・w
ということで、これを見やすい方法に変えるやり方です。
moreutils パッケージの中の ts コマンドを使う
moreutils というのは、以下のようなパッケージです。
$ apt info moreutils Package: moreutils Version: 0.65-1 Priority: optional Section: utils Maintainer: Nicolas Schier <nicolas@fjasle.eu> Installed-Size: 214 kB Depends: libc6 (>= 2.17), perl:any, libipc-run-perl, libtime-duration-perl, libtimedate-perl Conflicts: lckdo Replaces: lckdo Homepage: https://joeyh.name/code/moreutils/ Tag: devel::lang:perl, devel::library, implemented-in::c, implemented-in::perl, interface::commandline, role::devel-lib, role::program, scope::utility, works-with::text Download-Size: 74.4 kB APT-Manual-Installed: yes APT-Sources: https://deb.debian.org/debian sid/main arm64 Packages Description: additional Unix utilities This is a growing collection of the Unix tools that nobody thought to write long ago, when Unix was young. . So far, it includes the following utilities: - chronic: runs a command quietly unless it fails - combine: combine the lines in two files using boolean operations - errno: look up errno names and descriptions - ifdata: get network interface info without parsing ifconfig output - ifne: run a program if the standard input is not empty - isutf8: check if a file or standard input is utf-8 - lckdo: execute a program with a lock held - mispipe: pipe two commands, returning the exit status of the first - parallel: run multiple jobs at once - pee: tee standard input to pipes - sponge: soak up standard input and write to a file - ts: timestamp standard input - vidir: edit a directory in your text editor - vipe: insert a text editor into a pipe - zrun: automatically uncompress arguments to command
標準じゃないけど、ちょっと便利なスクリプト集みたいな感じです。
この中に ts コマンドがあって、以下のようなコマンドです。
- ts: timestamp standard input
要は、入力に対して、タイムスタンプを付与して出力するコマンドです。
こんな感じ。
$ echo 'helloworld' | ts May 16 21:40:44 helloworld
インストールは、普通に apt で。
$ sudo apt install moreutils Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: libio-pty-perl libipc-run-perl libtime-duration-perl The following NEW packages will be installed: libio-pty-perl libipc-run-perl libtime-duration-perl moreutils 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 226 kB of archives. After this operation, 624 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 https://deb.debian.org/debian sid/main arm64 libio-pty-perl arm64 1:1.15-2 [36.0 kB] Get:2 https://deb.debian.org/debian sid/main arm64 libipc-run-perl all 20200505.0-1 [102 kB] Get:3 https://deb.debian.org/debian sid/main arm64 libtime-duration-perl all 1.21-1 [13.7 kB] Get:4 https://deb.debian.org/debian sid/main arm64 moreutils arm64 0.65-1 [74.4 kB] Fetched 226 kB in 3s (90.0 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libio-pty-perl. (Reading database ... 52306 files and directories currently installed.) Preparing to unpack .../libio-pty-perl_1%3a1.15-2_arm64.deb ... Unpacking libio-pty-perl (1:1.15-2) ... Selecting previously unselected package libipc-run-perl. Preparing to unpack .../libipc-run-perl_20200505.0-1_all.deb ... Unpacking libipc-run-perl (20200505.0-1) ... Selecting previously unselected package libtime-duration-perl. Preparing to unpack .../libtime-duration-perl_1.21-1_all.deb ... Unpacking libtime-duration-perl (1.21-1) ... Selecting previously unselected package moreutils. Preparing to unpack .../moreutils_0.65-1_arm64.deb ... Unpacking moreutils (0.65-1) ... Setting up libio-pty-perl (1:1.15-2) ... Setting up libipc-run-perl (20200505.0-1) ... Setting up libtime-duration-perl (1.21-1) ... Setting up moreutils (0.65-1) ... Processing triggers for man-db (2.9.4-2) ...
では、今度は、さっきのpingの結果を ts コマンドにパイプでつなげます。タイプスタンプの出力は ts コマンドにしてもらうので、-D
オプションはつけずに実行。
$ ping -c 3 google.co.jp | ts May 16 21:38:30 PING google.co.jp (216.58.197.227) 56(84) bytes of data. May 16 21:38:30 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=1 ttl=113 time=273 ms May 16 21:38:31 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=2 ttl=113 time=56.9 ms May 16 21:38:32 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=3 ttl=113 time=421 ms May 16 21:38:32 May 16 21:38:32 --- google.co.jp ping statistics --- May 16 21:38:32 3 packets transmitted, 3 received, 0% packet loss, time 2003ms May 16 21:38:32 rtt min/avg/max/mdev = 56.921/250.500/421.188/149.589 ms
ちゃんとタイムスタンプ付いてくれていますが、日本人には馴染みづらい形式ですので、よく見る形式にします。
$ ping -c 3 google.co.jp | ts '%Y-%m-%d %H:%M:%S' 2021-05-16 21:42:11 PING google.co.jp (216.58.197.227) 56(84) bytes of data. 2021-05-16 21:42:11 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=1 ttl=113 time=380 ms 2021-05-16 21:42:12 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=2 ttl=113 time=42.6 ms 2021-05-16 21:42:13 64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=3 ttl=113 time=49.5 ms 2021-05-16 21:42:13 2021-05-16 21:42:13 --- google.co.jp ping statistics --- 2021-05-16 21:42:13 3 packets transmitted, 3 received, 0% packet loss, time 2004ms 2021-05-16 21:42:13 rtt min/avg/max/mdev = 42.579/157.492/380.436/157.669 ms
moreutilsのコマンドさん達は、どれも小技が効いていて結構便利ですよ。
vidir とか sponge とか vipe とかは、個人的によく使います。
参考情報
moreutilsの各コマンドについて分かりやすい説明をしてくださっている記事です。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場