Linux で特定の時間にコマンドを実行する方法

Linux で特定の時間にコマンドを実行する方法

先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大きなファイルなので、完了するまでに約 20 分かかります。もうこれ以上待ちたくないし、プロセスを終了させるために CTRL+C を押したくもありません。 Linux OS でコマンドを特定の時間実行し、タイムアウトしたら自動的に終了させる簡単な方法があるかどうかを知りたかったので、この投稿をしました。引き続きお読みください。

Linuxで特定の時間にコマンドを実行する

これには 2 つの方法があります。

方法1 – タイムアウトコマンドを使用する

最も一般的な方法は、timeout コマンドを使用することです。ご存知ない方のために説明すると、timeout コマンドはプロセスの絶対実行時間を効果的に制限します。 timeout コマンドは GNU coreutils パッケージの一部であるため、すべての GNU/Linux システムにプリインストールされています。

コマンドを 5 秒間だけ実行して、その後終了したいとします。これを行うには、次を使用します。

$ 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 コマンドを使用して実行すると、指定された時間間隔後に自動的に終了します。タイムアウト後もコマンドがまだ実行されている場合は、以下に示すように kill シグナルを送信できます。

$ timeout -k 20 10 tail -f /var/log/pacman.log

この場合、10 秒後に tail コマンドがまだ実行されている場合、timeout コマンドは 20 秒後に kill 信号を送信して終了します。

詳細については、man ページを参照してください。

$ man timeout

場合によっては、特定のプログラムの完了に長い時間がかかり、システムがフリーズしてしまうことがあります。この場合、このトリックを使用すると、一定時間後にプロセスを自動的に終了できます。

方法2 - 時間制限プログラムを使用する

timelimit 指定された引数を使用して指定されたコマンドを実行し、指定された時間後に指定されたシグナルでプロセスを終了します。まず警告信号を送信し、タイムアウト後に kill 信号を送信します。

タイムアウトとは異なり、timelimit にはよ​​り多くのオプションがあります。 killsig、warnsig、killtime、warntime などの複数の引数を渡すことができます。これは、Debian ベースのシステムのデフォルトのリポジトリで利用できます。したがって、次のコマンドを使用してインストールできます。

$ sudo apt-get install timelimit

Arch ベースのシステムの場合は、AUR で利用できます。したがって、Pacaur、Packer、Yay、Yaourt などの AUR ヘルパーを使用してインストールできます。

その他のディストリビューションの場合は、ここからソースをダウンロードして手動でインストールしてください。 timelimit をインストールした後、次のコマンドを実行して、特定の期間 (たとえば 10 秒) 実行します。

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

引数なしで timelimit を実行すると、デフォルト値が使用されます: warntime=3600 秒、warnsig=15 秒、killtime=120 秒、killsig=9。詳細については、このガイドの最後に記載されているマニュアル ページとプロジェクトの Web サイトを参照してください。

$ man timelimit

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Linuxカーネルの基本的なモジュール管理と時間管理操作を分析する
  • Linux でコマンドまたはプロセスの実行時間を調べる方法
  • Linux/CentOS システムでネットワーク時間を同期する 2 つの方法の詳細な説明
  • 時間を節約できる Linux コマンド エイリアス 15 個
  • Linux 日付時刻設定同期コマンド共有
  • Linux NTPサーバーの時刻同期設定の詳細な説明
  • Linux のバッチファイル削除コマンド (N 日前のファイルを削除)
  • Linux での i3 ウィンドウ マネージャーの設定と使用に関するチュートリアル
  • iptables および firewalld ツールを使用して Linux ファイアウォール接続ルールを管理する
  • Linux でプロセスを効果的に管理するための 8 つのコマンド
  • Linux カーネル デバイス ドライバー カーネル時間管理に関する注意事項

<<:  JavaScriptはマウスの動きに追従するボックスを実装します

>>:  JavaScript が重複したネットワークリクエストを防ぐ方法の例

推薦する

クリック範囲を拡大する入力チェックボックスを実装する方法

XML/HTML コードコンテンツをクリップボードにコピー< div style = &quo...

Vue におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...

Vue3におけるキーの役割と動作原理についての簡単な説明

このキー属性の機能は何ですか?まずは公式の説明を見てみましょう。 kekey 属性は主に、新しいノー...

トランザクションとロックを表示するための MySQL の一般的なステートメント

データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...

webpack-dev-server のコア概念とケースの詳細な説明

webpack-dev-server コアコンセプトWebpack の ContentBase と ...

Vue命令の動作原理と実装方法

Vue の紹介現在のビッグフロントエンドの時代は、混乱と衝突の時代です。世界は多くの派閥に分かれてお...

jconsole を使用してリモート Tomcat サービスを監視する方法

JConsoleとはJConsole は Java 5 で導入されました。 JConsole は、コ...

変数が空かどうかを判定するシェルの方法の概要

シェルで変数が空かどうかを判断する方法シェルプログラミングでは、パラメータのエラーチェック項目に、変...

WeChatアプレットのスクロールビューは、プルアップ時にデータの読み込みを重複させるソリューションを実装しています。

WeChat アプレットのスクロール ビューでは、プルアップして読み込むときにバグが多く発生します...

JS の効率的なマジック演算子の概要

JavaScript は現在、毎年新しいバージョンがリリースされており、より便利で効率的な新しい演算...

WordPress実験を実装するための3つの仮想マシンのKVM展開の詳細説明

1. KVM の概要カーネルベースの仮想マシンの略称は、Linux 2.6.20 以降のすべての主要...

CSS と JS を使用して下線効果を実装する方法の例

この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

LeetCode の SQL 実装 (175. 2 つのテーブルの結合)

[LeetCode] 175.2つのテーブルを結合する表: 人物+-------------+--...

Baidu百科事典UIの開発動向について議論する

<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...