GNU/Linux >> Linux の 問題 >  >> Linux

より良いcrontabにはanacronを使用してください

2021年には、人々がLinuxをこれまで以上に愛する理由が増えました。このシリーズでは、Linuxを使用する21の異なる理由を共有します。自動化は、Linuxを使用する最も良い理由の1つです。

Linuxで私のお気に入りの1つは、私のために仕事をしたいという意欲です。時間を浪費したり、エラーが発生したり、忘れがちなタスクを繰り返し実行する代わりに、Linuxにタスクを実行するようにスケジュールします。

自動化の準備

「自動化」という用語は、魅力的であると同時に威圧的である可能性があります。モジュール式にアプローチするのが役立つと思います。

1。何を実現したいですか?

まず、どのような結果を生み出したいかを知ってください。画像に透かしを入れていますか?雑然としたディレクトリからファイルを削除しますか?重要なデータのバックアップを実行していますか?何を目指すべきかがわかるように、自分でタスクを明確に定義してください。 1日に1回よりもはるかに少ない、毎日実行しているタスクがある場合は、自動化の候補になる可能性があります。

2。必要なアプリケーションを学ぶ

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

大きなタスクを小さなコンポーネントに分割し、各結果を手動で、ただし繰り返し可能で予測可能な方法で生成する方法を学びます。 Linuxで実行できることの多くはスクリプト化できますが、現在の制限を認識することが重要です。複数の画像のサイズ変更を自動化してメールで送信できるようにする方法を学ぶことと、機械学習を使用して週刊ニュースレターの精巧なアートワークを生成する方法を学ぶことには、違いがあります。午後に学ぶことができるこれらのことの1つと、もう1つは何年もかかる可能性があります。しかし、私たちは皆どこかから始めなければならないので、小さなことから始めて、常に改善する方法を探しています。

3。自動化

Linuxで自動化ツールを使用して、定期的に実行します。これがこの記事で取り上げるステップです!

何かを自動化するには、タスクを自動化するスクリプトが必要です。テストするときは、物事をシンプルに保つのが最善です。そのため、この記事で自動化するタスクは、helloというファイルを作成することです。 /tmp内 ディレクトリ:

#!/bin/sh

touch /tmp/hello

その単純なスクリプトをコピーしてテキストファイルに貼り付け、exampleという名前を付けます 。

クロン

すべてのLinuxインストールに付属している組み込みの自動化ソリューションはcronシステムです。 Linuxユーザーは、一般的にcronをタスクのスケジュールに使用する方法(通常は「cronジョブ」と呼ばれます)と呼びますが、cronの機能を提供するアプリケーションは複数あります。最も用途が広いのはcronieです。その利点は、しないことです。 システム管理者向けに設計された従来のcronアプリケーションと同じように、コンピュータは常にオンになっていると想定します。

Linuxディストリビューションが提供するcronシステムを確認します。 cronie以外の場合は、ディストリビューションのソフトウェアリポジトリからcronieをインストールできます。ディストリビューションにcronieのパッケージがない場合は、古いanacronを使用できます。 代わりにパッケージ。 anacron コマンドはcronieに含まれているため、取得方法に関係なく、anacronがあることを確認する必要があります。 続行する前に、システムで使用可能なコマンド。設定によっては、Anacronに管理ルート権限が必要になる場合があります。

$ which anacron
/usr/sbin/anacron

Anacronの仕事は、自動化ジョブが定期的に実行されるようにすることです。これを行うために、anacronは、ジョブが最後に実行された時刻を確認してから、ジョブを実行するように指示した頻度を確認します。

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

cronジョブ

多くのLinuxシステムには、cronが実行するためのいくつかのメンテナンスジョブがバンドルされています。私は自分のジョブをシステムジョブから分離したいので、ホームディレクトリにディレクトリを作成します。具体的には、~/.localという隠しフォルダがあります (「グローバル」コンピュータシステムではなく、ユーザーアカウント用にカスタマイズされているという意味で「ローカル」)ので、サブディレクトリetc/cron.dailyを作成します。 私のシステムでcronの通常のホームをミラーリングします。また、最後にジョブが実行された時刻を追跡するために、スプールディレクトリを作成する必要があります。

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

定期的に実行するスクリプトは、~/.local/etc/cron.dailyに配置できます。 ディレクトリ。 exampleをコピーします 今すぐディレクトリにスクリプトを記述し、chmodコマンドを使用して実行可能としてマークします。

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

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

アナクロン

デフォルトでは、cronシステムの多くは、ログファイルのローテーションや証明書の更新などの重要な低レベルのタスクによく使用されるため、システム管理者のドメインと見なされます。この記事で説明する構成は、通常のユーザーが個人の自動化タスクを設定するために設計されています。

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

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

このファイルは、すべての実行可能スクリプト(run-parts)を実行するようにanacronに指示します。 )~/.local/etc/cron.dailyにあります 毎日(つまり、毎日)、0分の遅延があります。ログイン直後にコンピュータがすべての可能なタスクにぶつからないように、数分の遅延が使用される場合があります。ただし、これらの設定はテストに適しています。

cron.mine valueは、プロセスの任意の名前です。私はそれをcron.mineと呼んでいます ただし、cron.personalと呼ぶこともできます またはpenguin またはあなたが望むもの。

anacrontabを確認します ファイルの構文:

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

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

.profileへのanacronの追加

最後に、anacronがローカル構成で実行されることを確認する必要があります。 anacronはrootユーザーではなく通常のユーザーとして実行しているため、ローカル構成(anacrontab)に転送する必要があります。 anacronに何をすべきかを指示するファイル、およびanacronが各ジョブが最後に実行されてから何日経過したかを追跡するのに役立つスプールディレクトリ:

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

-fn オプションはanacronに無視するように指示します タイムスタンプ。これは、何があってもcronジョブを実行するように強制していることを意味します。これはテスト専用です。

cronジョブのテスト

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

$ ls /tmp/hello
/tmp/hello

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

anacron -t /home/tux/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron
anacronの使用

パーソナル自動化インフラストラクチャを構成しているので、コンピューターで管理するスクリプトを~/.local/etc/cron.dailyに配置できます。 ディレクトリを作成すると、スケジュールどおりに実行されます。

ジョブを実行する頻度はあなた次第です。サンプルスクリプトは1日1回実行されます。明らかに、それはコンピュータの電源がオンになっていて、特定の日に起きているかどうかによって異なります。コンピューターを金曜日に使用し、週末のために取っておいた場合、スクリプトは土曜日と日曜日には実行されません。ただし、anacronは少なくとも1日が経過したことを認識しているため、月曜日にスクリプトが実行されます。 ~/.local/etcに、毎週、隔週、または毎月のディレクトリを追加できます。 さまざまな間隔をスケジュールします。

新しい間隔を追加するには:

  1. ディレクトリを~/.local/etcに追加します (たとえば、cron.weekly
  2. ~/.local/etc/anacrontabに行を追加します 新しいディレクトリでスクリプトを実行します。週間隔の場合、構成は次のようになります。
    7 0 cron.mine run-parts /home/tux/.local/etc/cron.weekly/

    0を使用 値は、オプションで、スクリプトの開始を丁寧に遅らせるための数分です。

  3. スクリプトをcron.weeklyに配置します ディレクトリ。

自動化されたライフスタイルへようこそ。そんな感じにはなりませんが、生産性が大幅に向上します。


Linux
  1. Linuxでcronを使用する方法

  2. 大規模なLinuxバックアップに高度なrsyncを使用する方法

  3. Linuxシステムリカバリにsystemd-nspawnを使用する方法

  1. LinuxとWindows:どちらのOSがPCゲームに適しているか

  2. Linux OS サービス「anacron」

  3. Linux と Windows – Linux がプログラミングと Web 開発に適している理由

  1. 自動化のためにAnsibleとanacronを使用する方法

  2. Linux –カレンダーに使用するアプリケーションはどれですか?

  3. Linuxでファイルを検索するには、検索と検索を使用します