Linux で at を使用して 1 回限りのジョブをスケジュールする方法
時間管理はマスターするのが難しい技術です。幸いなことに、テクノロジの助けを借りて、ありふれたタスクを自動化し、コンピューターに委任することができます。人間とは異なり、PC は正確に設定された時間に反復タスクを実行するのが得意です。
Linux では、cron などのツールを使用して繰り返しタスクを実行できます。さらに、 atコマンドを使用して、1 回限りのタスクをスケジュールして実行することもできます。
Linux でのインストール
at コマンドは、ほとんどのディストリビューションの標準 Linux ユーティリティの一部ではありません。幸いなことに、使用しているディストリビューションに関係なく、パッケージ マネージャーを使用して簡単にインストールできます。
Ubuntu、MX Linux、Pop!_OS などの Debian ベースのシステムでは、次のコマンドを実行してインストールできます。
sudo apt install at
RHEL、Fedora、Rocky Linux などの RPM ベースのディストリビューションを使用している場合は、DNF を使用してパッケージをインストールします。
sudo dnf install at
Manjaro のような Arch ベースの Linux ディストリビューションでは、次を実行します。
sudo pacman -S at
atd ジョブ スケジューラ サービスの開始
at コマンドを使用する前に、atd スケジューリング デーモンが実行されていることを確認してください。これは、スケジュールされたジョブを実行するためにatコマンドが使用するものです。
sudo systemctl status atd
atd サービスが実行されていない場合は、次を使用して開始できます。
sudo systemctl start atd
at を使用した Linux でのタスクのスケジューリング
atを使用して、将来のある時点で実行される1回限りのジョブをスケジュールする方法は次のとおりです。
command | at time_stamp
たとえば、ls コマンドを使用して現在のディレクトリの内容を一覧表示し、1 分後に出力をファイルに書き込むタスクをスケジュールできます。
まず、cd コマンドを使用してユーザーのホーム フォルダーに移動します。
cd ~
次に、次のコマンドを実行してタスクをスケジュールします。
ls > list_items.txt | at now + 1 minutes
出力には、タスクがスケジュールされていることが示されます。時間が経過したら、ディレクトリの内容を一覧表示できます。ディレクトリの内容を含む新しいテキスト ファイルが存在するはずです。
明日の正午にコマンドを実行する場合は、次を実行します。
ls > list_items.txt | at noon tomorrow
より具体的な時刻と日付については、日付形式MMDDHHMM YYYYを使用します。たとえば、2023 年 12 月 25 日の午後 1 時に上記のコマンドを実行するには、次のコマンドを実行できます。
ls > list_items.txt | at 12251300 2023
at コマンドには、特定のコマンドを正確な時間に実行できる高度な機能が多数あります。その他のコマンド オプションについては、man ページを参照してください。
man at
Linux で at を使用してスクリプトをスケジュールする
個々のコマンドを実行する以外に、at コマンドを使用して、指定した時間にスクリプトを実行するようにスケジュールすることもできます。
ホームフォルダーにdisk_usage.shという名前のスクリプトがあるとします。このスクリプトは、ハード ディスクの使用状況をテキスト ファイルに出力するだけです。スクリプトは次のとおりです。
#!/bin/bash
df -h > disk_usage.txt
今から 30 分後にこのスクリプトを実行するには、次のコマンドを実行するだけです。
at now + 30 minutes -f ~/disk_usage.sh
スクリプトに適切なモードを指定して、スクリプトが実行可能であることを確認してください。これを行うには、chmod コマンドを使用できます。
sudo chmod +x disk_usage.sh
Linux で保留中のタスクを管理する
次のコマンドを使用して、保留中のタスクを表示できます。
atq
保留中のタスクを削除するには、次のコマンド形式を使用します。
atrm task_number
たとえば、タスク番号 12 を削除するには、次を使用します。
atrm 12
at を使用して Linux で反復タスクを自動化する
at コマンドは、Linux PC で 1 回限りのジョブを実行または実行するための強力で用途の広いツールです。at とは別に、crontab を使用して、単純なジョブから複雑なジョブまで、あらゆる種類のタスクを自動化できます。
コメントを残す