Linux でバックアップスケジュールが設定されているかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、cron ジョブが設定されている様々な場所を調べることで、Linux システム上のスケジュールされたバックアップタスクを確認する方法を学びます。まず、crontab -l を使用して現在のユーザーの cron ジョブをリストアップし、個人用のスケジュールが設定されているかどうかを確認します。

次に、ソフトウェアパッケージによってインストールされたスケジュールタスクが多く含まれる /etc/cron.d ディレクトリをチェックして、システム全体の cron ジョブを調べます。最後に、潜在的なバックアップルーチンを含む、自動実行用に設定された毎日のスクリプトがあるかどうかを確認するために、/etc/cron.daily ディレクトリの内容を確認します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/crontab("Job Scheduling") subgraph Lab Skills linux/ls -.-> lab-558699{{"Linux でバックアップスケジュールが設定されているかどうかを確認する方法"}} linux/cat -.-> lab-558699{{"Linux でバックアップスケジュールが設定されているかどうかを確認する方法"}} linux/crontab -.-> lab-558699{{"Linux でバックアップスケジュールが設定されているかどうかを確認する方法"}} end

crontab -l でユーザーの cron ジョブをリストする

このステップでは、crontab コマンドを使用して現在のユーザーのスケジュールされたタスクを表示する方法を学びます。

cron は、Unix 系オペレーティングシステムにおける時間ベースのジョブスケジューラです。指定された間隔でコマンドやスクリプトを自動的に実行するようにスケジュールすることができます。これらのスケジュールされたタスクは、しばしば「cron ジョブ」と呼ばれます。

システム上の各ユーザーは、独自の cron ジョブのセットを持つことができます。これらは「crontab」(cron テーブル)と呼ばれる特別なファイルに保存されます。

現在のユーザー (labex) の cron ジョブを表示するには、crontab コマンドに -l オプションを付けて使用します。-l は「list」(リスト)を意味します。

まだ開いていない場合は、ターミナルを開きます。次のコマンドを入力して Enter キーを押します。

crontab -l

これは新しい環境なので、labex ユーザーにはまだ cron ジョブが設定されていない可能性が高いです。その場合、次のようなメッセージが表示されます。

no crontab for labex

このメッセージは、labex ユーザーに対してスケジュールされたタスクが設定されていないことを意味します。

cron ジョブが設定されていた場合、出力には各スケジュールされたタスクが新しい行に表示され、スケジュールと実行するコマンドが指定されます。

ユーザーの cron ジョブを理解することは、Linux システム上のスケジュールされたタスクを管理する最初のステップです。次のステップでは、システム全体の cron ジョブを調べます。

続ける をクリックして進んでください。

/etc/cron.d でシステムの cron ジョブを確認する

前のステップでは、特定のユーザーの cron ジョブを表示する方法を学びました。次に、システム全体の cron ジョブを調べてみましょう。

システム全体の cron ジョブは通常、/etc/cron.d/ ディレクトリに保存されています。crontab コマンドで管理されるユーザーの crontab とは異なり、システム全体の cron ジョブはこのディレクトリ内の個々のファイルで定義されます。

これらのファイルは、多くの場合、インストールされたソフトウェアパッケージによって作成され、システム全体で実行する必要があるタスク(システムの更新、ログのローテーション、クリーンアップスクリプトなど)をスケジュールするために使用されます。

/etc/cron.d/ ディレクトリ内のファイルを表示するには、ls コマンドを使用できます。このディレクトリは root ユーザーが所有しているため、その内容をリストするには sudo を使用する必要があります。

ターミナルに次のコマンドを入力し、Enter キーを押します。

sudo ls /etc/cron.d/

次のように、様々なファイルがリストされる出力が表示されることがあります。

anacron  e2scrub_all  phpsessionclean

表示される具体的なファイルは、システムにインストールされているソフトウェアによって異なります。このディレクトリ内の各ファイルは、システム全体の cron ジョブの設定を表しています。

これらのファイルの 1 つ、たとえば phpsessionclean の内容を表示するには、cat コマンドを使用できます。再び、このファイルは root が所有しているため、sudo が必要です。

次のコマンドを入力し、Enter キーを押します。

sudo cat /etc/cron.d/phpsessionclean

phpsessionclean スクリプトがいつ、どのように実行されるかを定義するファイルの内容が表示されます。形式はユーザーの crontab に似ていますが、コマンドを実行するユーザーを指定するユーザーフィールドも含まれています(多くの場合 root)。

## This file is installed by the php-common package
#
## The script will clean up old session files.
#
## See /usr/lib/php/sessionclean for details.

09,39 *	* * *	root	[ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi

この出力から、phpsessionclean スクリプトは毎日の毎時 09 分と 39 分にスケジュールされ、root ユーザーによって実行されることがわかります。

/etc/cron.d/ 内のファイルを調べることで、システムレベルで実行されている自動化タスクを理解するのに役立ちます。

続ける をクリックして次のステップに進みます。

/etc/cron.daily で毎日実行される cron ジョブを確認する

/etc/cron.d/ 内の個々のファイルに加えて、Linux システムでは、/etc/cron.daily//etc/cron.weekly//etc/cron.monthly/ のようなディレクトリを使用して、特定の間隔でスクリプトを実行するようにスケジュールすることがよくあります。

/etc/cron.daily/ に配置された実行可能なスクリプトは、毎日 1 回実行されます。同様に、/etc/cron.weekly/ 内のスクリプトは毎週 1 回、/etc/cron.monthly/ 内のスクリプトは毎月 1 回実行されます。

これらのディレクトリは通常、run-parts のようなスクリプトを実行するシステム全体の cron ジョブによって管理され、これらのディレクトリ内にあるすべてのスクリプトが実行されます。

/etc/cron.daily/ ディレクトリの内容を調べてみましょう。このディレクトリには、毎日実行されるようにスケジュールされたスクリプトが含まれています。

ls コマンドに sudo を付けて、このディレクトリ内のファイルをリストします。

sudo ls /etc/cron.daily/

おそらく次のようなスクリプトのリストが表示されます。

apt-compat  dpkg  logrotate  man-db  passwd  update-notifier-common

これらは、システムの毎日のメンテナンスタスクを実行するスクリプトです。たとえば、パッケージリストの更新 (apt-compat)、ログファイルのローテーション (logrotate)、マニュアルページデータベースの更新 (man-db) などです。

これらのスクリプトの 1 つが何を行うかを理解するには、sudo cat を使用してその内容を表示できます。たとえば、logrotate スクリプトを見てみましょう。

sudo cat /etc/cron.daily/logrotate

出力には、システムのログファイルが大きくなりすぎないようにローテーションする役割を持つスクリプトのコードが表示されます。

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
exit 0

このスクリプトは、logrotate コマンドが存在して実行可能かどうかを確認し、実行可能な場合は /etc/logrotate.conf 構成ファイルを使用して logrotate を実行します。

/etc/cron.daily/ および同様のディレクトリ内のスクリプトを理解することで、システムを円滑に動作させる自動メンテナンスタスクについて洞察を得ることができます。

これで、ユーザーの cron ジョブ、/etc/cron.d/ 内のシステム全体の cron ジョブ、および /etc/cron.daily/ 内の毎日の cron スクリプトを調べました。この知識は、Linux システム上のスケジュールされたタスクを管理するための基礎となります。

続ける をクリックして、実験を完了します。

まとめ

この実験では、cron ジョブを調べることで Linux でスケジュールされたバックアップタスクを確認する方法を学びました。まず、crontab -l を使用して現在のユーザーの cron ジョブをリストし、このコマンドがユーザー固有のスケジュールされたタスクを表示することを理解しました。

次に、/etc/cron.d/ ディレクトリを確認することでシステム全体の cron ジョブを調べました。このディレクトリには、多くの場合ソフトウェアパッケージによってインストールされる、システム全体に対してスケジュールされたタスクを定義するファイルが含まれています。最後に、/etc/cron.daily ディレクトリにある毎日の cron ジョブを確認しました。このディレクトリには通常、毎日 1 回実行されることを意図したスクリプトが格納されています。これらの場所を確認することで、Linux システム上でバックアップスケジュールが設定されているかどうかを判断できます。