5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

bashでタイムアウトを実装する(timeoutコマンドの代用)

Posted at

目的

  • 古いCentOS(CentOS4.3)に、timeoutコマンドが無かった
  • ありもので実装できないかなぁ

環境

  • CentOS 4.3
  • bash

スクリプト

timeout.sh
#!/bin/bash

# タイムアウト秒を指定
ALIVE_TIME=10

# 以下がtimeoutコマンドの代用部分
(ping 192.168.1.1) & sleep ${ALIVE_TIME} ; ps $! > /dev/null 2>&1 && kill -9 $!

解説

上記のスクリプトではping 192.168.1.1を10秒でタイムアウトするようにしています。
サンプルなので、ping -t 10とかのツッコミは無し。

実行したいコマンド(ここでは、ping)を&でバックグラウンド実行します。
sleep ${ALIVE_TIME}でsleepします。(ここでは10秒)
sleep後、psコマンドでバックグラウンドに回したコマンド(ここではping 192.168.1.1)の生存を確認します。
コマンドが起動中であれば、kill -9でコマンドを停止します。

ワンライナーでもできるね

(ping 192.168.1.1) & sleep 10 ; ps $! > /dev/null 2>&1 && kill -9 $!
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?