CentOS7.4 cronでシステム自動運用

シェアする

定期的な処理を行なうものはシステムで自動実行させ、運用負荷の軽減を目指します。ほとんどの場合であれば、何らかの自動運用を行なうための製品で管理と運用を実現しますが、小規模な運用であれば、cronで間に合わせることも可能です。

cronの概要

CentOSの最小構成インストールでインストール済みになっていると思いますが、念のため、パッケージの確認をします。

# yum info cronie
   :(省略)
Installed Packages
Name        : cronie
Arch        : x86_64
Version     : 1.4.11
Release     : 17.el7
Size        : 215 k
Repo        : installed
From repo   : base
Summary     : Cron daemon for executing programs at set times
URL         : https://fedorahosted.org/cronie
   :(省略)

cronの設定ファイルには、下記のようなものがあり、用途によって使い分けることになります。

/etc/crontab root 直接編集しない
/etc/cron.hourly/. root 毎時処理をする設定ファイルの配置場所
/etc/cron.daily/. root 毎日処理をする設定ファイルの配置場所
/etc/cron.weekly/. root 毎週処理をする設定ファイルの配置場所
/etc/cron.monthly/. root 毎月処理をする設定ファイルの配置場所
/etc/cron.d/. root 毎[時,日,週,月]に属さない処理をする設定ファイルの配置場所
/var/spool/cron/. 全てのユーザー ユーザーごとに区分した処理をする設定ファイルの配置場所

何らかの処理を自動運用としたい場合、「/var/cron.d/.」を利用するのが良いと思います。

rootユーザーでの自動実行するための設定

「/etc/crontab」ファイルはシステム管理者(つまりroot)用のもので、編集をするのは避けるのが良く、設定を行ないたい場合は、「/etc/cron.d/.」ディレクトリー内で行なう。

# cat /etc/crontab <= 編集しません。ファイルの中身に書式の説明あり。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
 
# For details see man 4 crontabs
 
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

rootユーザーによる自動実行の設定は、「/etc/cron.d」ディレクトリー内にあるものを編集します。

# vim /etc/cron.d/test
0 23  * * * user01 /tool/logger.bash <= 日次で23:00にuser01でシェルスクリプトを実行

ファイルを編集後は、特にcrondを再起動しなくとも実行してくれます。

アクセス制御

基本的にcronの使用は、全てのユーザーで可能ですが、特にシステムを共同で利用する場合は、特定のユーザーのみにcronの使用許可を与える事ができます。

# vim /etc/cron.allow
user01
user02

アクセス制御は、「/etc/cron.allow」と「/etc/cron.deny」で行ないますが、ファイルの有無で動作が変わります。

/etc/cron.allow /etc/cron.deny 使用できる対象ユーザー
ファイル無 ファイル無 全ユーザーが使用できる
ファイル有 ファイル[有,無] /etc/cron.allowファイルに記述されたユーザーが使用できる
ファイル無 ファイル有 /etc/cron.denyファイルに記述されていないユーザーが使用できる
ファイル空 ファイル[有,無] 全ユーザー使用できない
ファイル無 ファイル空 全ユーザーが使用できる