先日、rsyncを使用してローカルエリアネットワーク上の別のシステムに大きなファイルを転送していました。非常に大きなファイルなので、完成までに約20分かかりました。そんなに長く待ちたくないし、CTRL+Cを押して手動でプロセスを終了したくない。 Unixライクなオペレーティングシステムでコマンドを特定の時間実行し、時間がなくなると自動的に強制終了する簡単な方法があるかどうか疑問に思っていました。したがって、この投稿です。続きを読む。
Linuxで特定の時間コマンドを実行する
これは2つの方法で実行できます。
方法1-「timeout」コマンドを使用する
最も一般的な方法は、タイムアウトを使用することです。 この目的のためのコマンド。知らない人のために、timeoutコマンドはプロセスの絶対実行時間を効果的に制限します。タイムアウトコマンドはGNUcoreutilsパッケージの一部であるため、すべてのGNU/Linuxシステムにプリインストールされています。
たとえば、特定の時間だけコマンドを実行し、時間が経過すると自動的にコマンドを強制終了するとします。そのために、次を使用します:
$ timeout <time-limit-interval> <command>
たとえば、次のコマンドは10秒後に終了します。
$ timeout 10s tail -f /var/log/pacman.log
また、秒の接尾辞「s」を指定する必要はありません。次のコマンドは上記と同じです。
$ timeout 10 tail -f /var/log/pacman.log
その他の使用可能なサフィックスは次のとおりです。
- 「m」は数分間
- 何時間も「h」
- 何日も「d」。
このtail-f /var/log/pacman.logを実行する場合 コマンドを押すと、CTRL+Cを押して手動で終了するまで実行を続けます。ただし、タイムアウトと一緒に実行すると コマンドを実行すると、指定された時間間隔の後に自動的に強制終了されます。
タイムアウト後もコマンドが実行されている場合に備えて、キルを送信できます。 以下のような信号。
$ timeout -k 20 10 tail -f /var/log/pacman.log
この場合、tailコマンドが10秒後も実行されていると、timeoutコマンドは20秒後にkillシグナルを送信し、終了します。
Tmeoutコマンドは、ハードウェアの問題をトラブルシューティングするときに特に役立ちます。たとえば、次のコマンドを実行して、カーネルリングバッファからのすべてのメッセージを表示しますが、10秒間だけです。
$ timeout 10 dmesg -w
詳細については、マニュアルページを確認してください。
$ man timeout
特定のプログラムが完了してシステムがフリーズするまでに長い時間がかかる場合があります。このような場合、このトリックを使用して、特定の時間が経過するとプロセスを自動的に終了できます。
また、 Cpulimitの使用を検討してください 、プロセスのCPU使用率を制限するためのシンプルなアプリケーション。詳細については、次のリンクを確認してください。
- LinuxでプロセスのCPU使用率を制限する方法
方法2-「Timelimit」プログラムを使用する
Timelimitユーティリティは、指定された引数を使用して指定されたコマンドを実行し、指定されたシグナルを使用して指定された時間の後に生成されたプロセスを終了します。まず、警告に合格します シグナルを送信し、タイムアウト後、キルを送信します 信号。
タイムアウトユーティリティとは異なり、Timelimitにはより多くのオプションがあります。 killsig、warnsig、killtime、warntimeなどの多くの引数を渡すことができます。
Debianベースのシステムのデフォルトのリポジトリで利用できます。したがって、コマンドを使用してインストールできます:
$ sudo apt-get install timelimit
Archベースのシステムの場合、AURで使用できます。したがって、 PacaurなどのAURヘルパープログラムを使用してインストールできます。 、パッカー 、はい 、ヨーグルト など
その他のディストリビューションについては、ソースをここからダウンロードしてください。 手動でインストールします。
Timelimitプログラムをインストールした後、次のコマンドを特定の時間、たとえば10秒間実行します。
$ timelimit -t10 tail -f /var/log/pacman.log
引数なしでtimelimitを実行すると、デフォルト値 warntime=3600秒が使用されます。 、 warnsig =15 、 killtime =120 、 killsig =9 。
詳細については、このガイドの最後にあるマニュアルページとプロジェクトのWebサイトを参照してください。
$ man timelimit
そして、今日はこれですべてです。これがお役に立てば幸いです。来るより良いもの。しばらくお待ちください!
乾杯!