Linuxで時間制限(タイムアウト)を使用してコマンドを実行する方法


Linuxには豊富なコマンドが付属しており、各コマンドは一意であり、特定の場合に使用されます。 Linuxの目標は、可能な限り高速かつ効率的になることを支援することです。 Linuxコマンドの1つのプロパティは、時間制限です。任意のコマンドに時間制限を設定できます。時間が経過すると、コマンドの実行が停止します。

この短いチュートリアルでは、コマンドで時間制限を使用する方法について2つの方法を学習します。

  1. Run Linux Commands Using the timeout Tool
  2. Run Linux Commands Using Timelimit Program

Linuxには、タイムアウトと呼ばれるコマンドラインユーティリティがあり、時間制限付きでコマンドを実行できます。

構文は次のとおりです。

timeout [OPTION] DURATION COMMAND [ARG]...

このコマンドを使用するには、実行するコマンドでタイムアウト値(秒単位)を指定します。たとえば、pingコマンドを5秒後にタイムアウトするには、次のコマンドを実行できます。

# timeout 5s ping google.com

番号5の後に(s)を指定する必要はありません。以下のコマンドは同じであり、引き続き機能します。

# timeout 5 ping google.com

その他の接尾辞は次のとおりです。

  • m representing minutes
  • h representing hours
  • d representing days

タイムアウトが最初の信号を送信した後でも、コマンドが実行され続ける場合があります。このような場合は、 -kill-after オプションを使用できます。

構文は次のとおりです。

-k, --kill-after=DURATION

キル信号が送信される時間の後にタイムアウトに通知する期間を指定する必要があります。

たとえば、表示されているコマンドは8秒後に終了します。

# timeout 8s tail -f /var/log/syslog

Timelimitプログラムは、指定されたコマンドを実行し、指定されたシグナルを使用して、指定された時間後にプロセスを終了します。最初に警告シグナルを渡し、タイムアウト後にキルシグナルを送信します。

タイムアウトオプションとは異なり、Timelimitには、killsig、warnsig、killtime、warntimeなどのオプションがあります。

TimelimitはDebianベースのシステムのリポジトリにあり、それをインストールするには、次のコマンドを使用します。

$ sudo apt install timelimit

Archベースのシステムの場合、PacaurPacmanやPackerなどのAURヘルパープログラムを使用してインストールできます。

# Pacman -S timelimit
# pacaur -S timelimit
# packer -S timelimit

他のLinuxディストリビューションでは、時間制限ソースをダウンロードして手動でインストールできます。

インストール後、次のコマンドを実行して時間を指定します。この例では、10秒を使用できます。

$ timelimit -t10 tail -f /var/log/pacman.log

引数を指定しない場合、Timelimitはデフォルト値(warntime u003d 3600秒、warnsig u003d 15、killtime u003d 120、およびkillsig u003d 9)を使用することに注意してください。

このガイドでは、Linuxで時間制限付きのコマンドを実行する方法を学習しました。レビューでは、TimeoutコマンドまたはTimelimitユーティリティを使用できます。

Timeoutコマンドは使いやすいですが、Timelimitユーティリティは少し複雑ですが、より多くのオプションがあります。必要に応じて、最適なオプションを選択できます。