timeout
1時間後にスクリプトを終了したいと思います。
私はDebianで実行していてtimeout 1h <script>
簡単です。
私のアーチLinuxシステムでは状況が異なります。いくつか試した後、問題は私のタイムアウトバイナリが実際のシステム時間ではなくCPU時間を使用していることに気づいたようです。明らかに、タイムアウトしたいスクリプトはwget
CPU時間をあまり使用しません。コマンドは、timeout 3600 wget
終了するまで最大半日間実行できます。
timeout 5 dd if=/dev/zero of=/dev/null
ただし、クロック時間6.6秒(CPU時間5.1秒)後に終了します。
timeout
バイナリが見つかりません(説明:いいえ私のシステムでは、Webからダウンロードすることを意味します。)すべてのソースは基本的に「Linuxに付属しています」と言います。私にはorはtimeout
ありませんが、それが何であれ、次のように言います。--version
--help
Usage:
timeout [-t timelimit] [-m memlimit] [-x hertz] command [arguments ...]
Died at /usr/local/bin/timeout line 29
混乱したバイナリはありますか?によると、man timeout
バージョンとヘルプオプションの両方が利用可能である必要があります。 Linuxコアの一部なので、timeout
どうやって再インストールしますか?
ベストアンサー1
元の投稿とそのコメントを振り返ると、この問題は存在するタイムアウトバイナリの2つの異なるコピーに関連しているようです。 1つはそこにあり/usr/local/bin
、もう1つはそこにあります/usr/bin
。
シェルがバイナリを探していない場所にそれらの1つを移動すると、どちらがどちらであるかを判断するのに役立ちます。/usr/bin
システムバイナリの可能性が高いと仮定すると、そのうちの1つが/usr/local/bin
私たちの問題かもしれません。私が間違っている可能性があります。
Debian、Ubuntu、およびその派生製品でパッケージマネージャを照会できます。
$ dpkg -S /usr/bin/timeout
coreutils: /usr/bin/timeout
またはCentOS、RedHat、Fedoraなど:
$ yum provides /usr/bin/timeout
...
coreutils-8.22-24.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : base
Matched from:
Filename : /usr/bin/timeout
ただし、パッケージマネージャは正しいかもしれません/usr/local/bin/timeout
。