blog

システム運用|Linuxのanacronコマンドの使い方

繰り返しの作業を手作業で行う代わりに、Linuxに任せましょう。...

Oct 11, 2025 · 6 min. read
シェア

繰り返しの作業を手作業で行う代わりに、Linuxにお任せください。

このシリーズでは、Linuxを使う21の理由を紹介します。自動化はLinuxを使う最高の理由の1つです。

自動化の準備

オートメーション」という言葉は、威圧的でもあり魅力的でもあります。私は、モジュール方式でアプローチすることが役に立つと思います。

何を達成したいのですか?

まず、どのような結果を出したいのかを知ってください。イメージに透かしを入れるのですか?散らかったディレクトリからファイルを削除しますか?重要なデータのバックアップですか?タスクを明確に定義することで、何を目指しているのかがわかります。毎日、あるいは1日1回以上行っているタスクがあれば、それは自動化の候補でしょう。

必要なアプリを学びましょう!

大きなタスクを小さなコンポーネントに分割し、それぞれの結果を手作業で、しかし再現可能で予測可能な方法で生成する方法を学びます。Linuxでできることの多くはスクリプトでできますが、現在の限界を認識することが重要です。数枚のイメージを自動的にリサイズして簡単にメールできるようにする方法を学ぶのと、機械学習を使って週刊ニュースレターのために入念に作られたアートワークを生成するのとでは、天と地ほどの差があります。午後に学べることもあれば、何年もかかることもあります。しかし、全てはどこかから始めなければならないので、とにかく小さなことから始め、常に向上する方法を探し続けましょう。

オートメーション

Linuxの自動化ツールを使って、定期的にそれを実現しましょう。以上がこの記事で紹介する手順です!

何かを自動化するには、タスクを自動化するスクリプトが必要です。テストするときはシンプルにするのが一番なので、この記事で自動化するタスクは、/tmpディレクトリにhelloというファイルを作成することです。

  1. #!/bin/sh
  2. touch /tmp/hello

この簡単なスクリプトをコピーしてテキストファイルに貼り付け、exampleという名前を付けてください。

Cron

Linuxユーザーはcronを一般的にタスクのスケジューリングに使用する方法と呼ぶ傾向がありますが、cronの機能を提供するアプリケーションはいくつかあります。最も汎用性が高いのは cronie、歴史的にシステム管理者向けに設計されたcronアプリケーションのように、コンピュータが常にオンであることを前提としないという利点があります。

Linuxディストリビューションが提供するcronシステムを確認してください。cronieでない場合、ディストリビューションのリポジトリからcronieをインストールすることができます。ディストリビューションにcronieのパッケージがない場合、代わりに古いanacronパッケージを使用することができます。anacronは設定によっては管理者のroot権限が必要です。

  1. $ which anacron
  2. /usr/sbin/anacron

anacronの仕事は自動化されたジョブが定期的に実行されるようにすることです。これを行うために、anacronはジョブが最後に実行されたのがいつかを調べ、次にあなたがジョブを実行するように指示した頻度を調べます。

5日ごとにスクリプトを実行するようにanacronを設定したとします。コンピュータの電源を入れたり、スリープから解除したりするたびに、anacronはログをスキャンして、ジョブを実行する必要があるかどうかを判断します。ジョブが5日以上実行されている場合、anacronはそのジョブを実行します。

Cron

  1. $ mkdir -p ~/.local/etc/cron.daily ~/.var/spool/anacron

定期的に実行したいスクリプトを ~/.local/etc/cron.daily ディレクトリに置くことができます。そのディレクトリに例のスクリプトをコピーし、 chmodコマンドで実行可能にしてください。

  1. $ cp example ~/.local/etc/cron.daily
  2. # chmod +x ~/.local/etc/cron.daily/example

次に、 ~/.local/etc/cron.daily ディレクトリにあるスクリプトを実行するようにanacronを設定します。

anacron

デフォルトでは、cronシステムの多くはシステム管理者の領域と考えられており、ログファイルのローテーションや証明書の更新などの重要な基本タスクに使用されます。この記事で示す設定は、一般的なユーザーが個人的に自動化タスクを設定するために設計されています。

cronジョブを実行するようにanacronを設定するには、 /.local/etc/anacrontab 設定ファイルを作成します:

  1. SHELL=/bin/sh
  2. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3. 1  0  cron.mine    run-parts /home/tux/.local/etc/cron.daily/

このファイルはanacronに、 ~/.local/etc/cron.daily ある実行スクリプトを毎日0分遅れて実行するように指示します。時々、数分の遅延が使われることがありますが、これはログインしてすぐにコンピュータが可能な限りのタスクを実行しないようにするためです。この設定はテストに適しています。

cron.mineの値はプロセスの任意の名前です。私はcron.mineと呼んでいますが、あなたはcron.personalとかpenguinとか好きなように呼んでください。

anacrontab 構文を確認してください:

  1. $ anacron -T -t ~/.local/etc/anacrontab \
  2. -S /home/tux/.var/spool/anacron

沈黙は成功を意味します。

.profile anacronを

最後に、anacronがローカル設定で実行されていることを確認する必要があります。rootではなく一般ユーザーとしてanacronを実行しているので、ローカル設定に指示する必要があります。anacrontabファイルはanacronに何をすべきかを指示し、spoolディレクトリはanacronが各ジョブが最後に実行されてから何日経ったかを追跡するのに役立ちます:

  1. anacron -fn -t /home/tux/.local/etc/anacrontab \
  2. -S /home/tux/.var/spool/anacron

fnオプションはanacronにタイムスタンプを伝え、強制的にcronジョブを実行させます。これは純粋にテスト用です。

cronジョブのテスト

これですべてのセットアップが終わったので、ジョブをテストすることができます。技術的には、再起動せずにテストすることもできますが、中断や不規則なログインセッションを処理するように設計されているため、再起動が最も理にかなっています。コンピュータを再起動してログインし、テストファイルを探してください:

  1. $ ls /tmp/hello
  2. /tmp/hello

ファイルが存在すると仮定すると、例のスクリプトは正常に実行されました。これで、~/.profileからテスト・オプションを削除して、これを最終的な設定として残すことができます。

  1. anacron -t /home/tux/.local/etc/anacrontab \
  2. -S /home/tux/.var/spool/anacron

アナクロンの使用

あなたはすでに個人的な自動化インフラを設定しているので、コンピュータに管理してもらいたいスクリプトを anacron -fn -t /home/tux/.local/etc/anacrontab \ ディレクトリに入れれば、スケジュール通りに実行されます。

これは、ジョブを実行する頻度によって異なります。スクリプトの例では、1日に1回実行します。もちろん、これはコンピュータの電源が入っていて、その日に起きて いるかどうかに依存します。金曜日にコンピュータを使用し、週末に設定した場合、スクリプト は土曜日と日曜日には実行されません。しかし、月曜日には、anacronが少なくとも1日が経過したことを認識するため、スクリプトは実行されます。~/.local/etcにweekly、fortnightly、あるいはmonthlyディレクトリを追加して、様々な間隔でスケジュールを設定することができます。

新しいインターバルを追加するには

  1. ディレクトリを -S /home/tux/.var/spool/anacron 追加します。
  2. 新しいディレクトリでスクリプトを実行するように $ ls /tmp/hello に行を追加します。週間間隔の場合、設定は以下のようになります。
  3. スクリプトを /tmp/hello ディレクトリに置きます。

自動化されたライフスタイルへようこそ。そうは感じないかもしれませんが、より効率的になります。

Read next