シェルで一定時間アプリケーションを実行する方法


12

そしてそれはどのようにして、できればTerminal力が閉鎖される前に、30秒間実行するアプリケーションを取得すると、そのプロセスのログをエコー?


@JacobVlijmこれは、主に使用目的の領域がCIサービスであるため、言語の移植性のためにシェルスクリプトとして実行するのが理想的です。
ir-g

1
@ ir-g timeoutコマンドを使用できます。例えば、タイムアウト30代では、コマンド
mcantsin

回答:


19

timeoutコマンドを使用することもできます。

timeout -k 10s 30s command

このコマンドは30秒間実行され、まだ実行されている場合は10秒後に終了します。-その他のオプションについては、マンページを確認してください。


1
@ ir-gどういたしまして。また、watchコマンドもチェックアウトすることをお勧めします。これは、コマンドラインでも同様であり、非常に使いやすいコマンドです。
mcantsin 14

2
そのポインタをありがとうwatch、非常に興味深いコマンドとして私を打つ。便利な...に来ることができました
IR-G

3

以下に2つの方法を示します(ただし、mcantsinによって提案されtimeoutコマンドの方がおそらく優れています)。

  1. バックグラウンドでコマンドを起動します。その方法でPIDが保存され$!、それを使用して指定した時間後にコマンドを強制終了できます。

    command &
    sleep 30 && kill $!
  2. コマンドを起動し、pkillまたはkillallを使用して強制終了します。注意:これは、その名前のコマンドが1つだけ実行されていることを前提としfirefoxています。例として使用しています。

    firefox &
    sleep 30 && pkill firefox

「そのプロセスのログ」の意味がわかりませんが、プロセスの標準エラーはを使用してファイルに保存できますcommand 2> logfile.txt

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.