関連記事
概要
以下、自分用のメモです。使いたいときによく忘れるのでここにメモメモ。。。
なにかのコマンドを指定の秒数だけ起動して終了させたいということは結構あります。
コマンドをバックグラウンドで起動して、sleepコマンドで所定時間待ってから、killしても良いのですが
linux系なら、timeout
コマンドがありますので、こっち使った方が楽です。
コマンドの書式は以下となります。
timeout [オプション] DURATION COMMAND [ARG]...
試してみる
例えば、sleep コマンドを以下のように実行すると
$ time sleep 5 real 0m5.001s user 0m0.001s sys 0m0.000s
当然ながら、5秒間ジーッとなって、コマンドが終わります。
これを以下のようにしてみます。
$ time timeout 2s sleep 5 real 0m2.031s user 0m0.002s sys 0m0.000s
timeout
で指定した秒数でちゃんと終わってくれます。
例えば、tcpdumpコマンドを使ってpcapファイルを作ろうとする場合に3秒間だけキャプチャした結果が欲しい場合は以下のように出来ます。
$ sudo timeout 3s tcpdump -i eth0 -w example.pcap 'tcp port 8080'
自分で作ったコマンドがいつまでたっても処理が終わらない場合を考慮してタイムアウト制限をつけて実行する場合とか結構便利です。
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。