U.5.quotacheck の定期実行
quota ファイル (aquota.user) は quotacheck コマンドで定期的に更新する必要がある。
quota を導入・設定済みのサーバは起動時に quotacheck が実行される (/etc/rc.d/rc.sysinit スクリプトに記述されている) が、連続運転するサーバの場合は定期的な再起動など不可能であるし、人手によるコマンド投入も煩わしい。
/home パーティション (ファイル システム) の使用率が低く、かつ Linux システムの負荷も軽くなっている時間帯に、必要なタスクを実行する確実な方法に cron の使用がある。
cron は指定されたタスクを繰り返し実行するデーモン (crond) で、繰り返しのタイミングは 月, 日, 曜日, 時, 分 で細かく設定できる。
以下で crontab -e コマンドで quotacheck の定期実行スケジュールを作る。
cron は通常インストール済みであると思う。 cron のデーモンである crond が稼働中かどうかを確認する。
- crond 実行中の確認。
- もし "crondは停止しています" と表示されたら、自動起動されるように chkconfig で登録し、現在停止中の crond を稼働させる。
以下の設定例では、毎週月曜日の午前 2 時 00 分に quota を無効にし、2 時 01 分に quotacheck を実行、2 時 10 分に quota を有効に戻すスケジュールを作成する。
(quotacheck の実施時刻と quotaon のタイミングは、状況に応じて適宜変更すること)
- crontab コマンドを -e オプションで実行する。
- vi エディタが起動する。
root として初めての crontab 登録なので、新規ファイルと同じ扱いになる。
(過去に登録済みのスケジュールがあれば、その内容が表示される)
- quotaoff, quotacheck, quotaon の 3 行を追加して保存・終了する。
- 初登録の場合、次のメッセージが表示される。
◎ crontab -e コマンドで作成したスケジュールは、/var/spool/cron ディレクトリにアカウントと
同名の設定ファイル (この場合は root) で保存される。
この設定ファイルは crontab -e コマンド以外で編集してはならない。
パーミッションの変更やスケルトンの作成、quota によるディスク使用量の管理などの設定を見てきたが、ユーザ追加時の作業で自動化できていない部分もある。
ユーザを追加した場合の必須作業には、次の2点がある。
追加したユーザのホーム ディレクトリに対してパーミッションの変更を行う。
ユーザのホーム ディレクトリを
userdir と仮定した場合、次のコマンドを入力する。
# chmod 555 /home/userdir
追加したユーザに quota によるディスク使用量の割り当て (制限) を行う。
quota 設定済みの既設ユーザ アカウント名を
sample 、追加ユーザのアカウント名を
newuser と仮定した場合、次のコマンドを入力する。
# edquota -p sample newuser