Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@kkino1985

【小ネタ】一定時間応答が返らないコマンドを強制終了するコマンド(timeout)

More than 1 year has passed since last update.

はじめに

今日はちょっとした小ネタ。

別件で調べものをしていた際にスクリプトなどで「一定時間コマンドが返って来なかった場合」的なロジックを組み込む時に使えそうなコマンドを見つけたので、備忘がてら紹介します。
自分はwhileで回しながらsleepをかけたり、みたいなことをしていたのですが、今時のLinuxはそんなことしなくても良さそうですよ、という話です。

timeoutコマンドとは

timeoutコマンドは、指定したコマンドの実行時間を指定し、その間に終われば正常終了、終わらなければ異常終了(打ち切り)とするものです。

  • 書式 : timeout (num) (command)

詳細なオプションなどは下記の記事(@IT)を参照。

※タイムアウトの単位を秒(デフォルト)以外に分や時間で指定したり、終了時のシグナルを指定したり等、割とかゆいところに手が届く仕様になっているようです。

試してみました

### 正常時 ###
$ time timeout 3 sleep 2 ; echo $?

real    0m2.002s
user    0m0.002s
sys     0m0.000s
0

  →時間内に終わった場合はRC=0が返ります

### 異常時 ###
$ time timeout 3 sleep 6 ; echo $?

real    0m3.001s
user    0m0.002s
sys     0m0.000s
124

  →指定した時間に到達した時点でコマンドは強制終了(RC=124)となります
0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kkino1985
東京でインフラエンジニア(主にAWSとAzure)をやっています。 資格はAWS(CLP/SAA/SOA/DVA/SAP/DOP/SCS/ANS/DBS/DAS)、Azure(AZ-900/AZ-103)、LinuC(Lv2)、応用技術者等。 自分が勉強したこと、新しく知ったこと、備忘などを書いていきます。 (開発経験は)ないです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?