学習記録#31 250710

634ページから

665ページまで

anacron:
crontabで指定された時刻にシステムが起動していなかった場合、そのcronジョブは実行されないままになってしまう。
そこで、anacronを使うと、システム停止中に経過してしまったスケジューリングも実行できる
anacronのスケジューリングは、/etc/anacrontabに記述される

/etc/anacrontabファイルの内容の例
SHELL=/bin/sh
PATH=/sbin:bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45 ←ランダムに遅らせる最大値
# the jobs will be started during the follwing hours only
START_HOURS_RANGE=3-22 ←3時〜22時の間だけ開始される
# period in days delay in minutes job-identifier command
# 1dayおきに実行する
# 実行するまで5minutes待機する
# (これに、RANDOM_DELAYで指定された範囲でランダムに遅らせられる)
# 実行日はcron.dailyに記述される
# niceコマンド付きで、run-partsコマンドを実行する
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

crontabは1分単位で実行タイミングを指定できるが、anacrontabでは実行タイミングは指定できない
RANDOM_DELAYでランダムに遅らせるのは、ホスト間でジョブの実行タイミングを分散させられるようにするため

atコマンド:
cronが定期的に繰り返し実行するジョブを扱うのに対し、atコマンドは1回限りの実行スケジュールを扱う
スケジューリングの実施には、atデーモンが動作している必要がある

$ at 5:00 tomorrow ←スケジュール指定
$ at -d tomorrow ←スケジュール削除
$ ar -l ←スケジュールリスト

cronやatの利用制限は、ユーザー単位で実施できる

cronのアクセス制限:
/etc/cron.allow、/etc/cron.denyを使ってアクセス制限する
/etc/cron.allowがあれば、そこに記述されたユーザーのみアクセス権を持つ。必然的に/etc/cron.denyは無視されることになる
デフォルトでは、空の/etc/cron.denyファイルだけがある

言語や通貨単位、日付の書式など地域や国に合わせることをローカライゼーションというが、国毎に行うのは大変なので、最近は最初から多言語・多地域に対応する国際化(internationalization, i18n)が行われていることが多い

利用者の地域情報をロケールといい、これに従って表示言語や表示書式を変更できるように作られている
メッセージの出力、通過、日時の書式など複数のカテゴリがある
環境変数LC_ALL:
これが設定されてたら、すべてのカテゴリに対してこの値が使われる
LC_ALLが設定されておらず、個々のカテゴリに対応した環境変数が設定されていれば、その値が使われる。
環境変数LANG:
これが設定されていたら、すべてのカテゴリに対してこの値が使われるが、個々のカテゴリごとに個別の設定をすることも可能

localコマンドで現在のロケール情報を確認できる

文字コードの変換にはiconvコマンドを使う
例)
日本語EUCで作成されたファイルをUTF-8に変換して保存する
$ iconv -f eucjp -t utf8 report.euc.txt > report.utf8.txt

練習問題を解く

ユーザーアカウント作成
$ useradd -d /home/planet -s /bin/zsh jupiter

すでにgroupA, groupBに所属してるユーザーに新たに別の既存グループgroupCにも所属させる時は、
usermodで-G groupA, groupB, groupCみたいな感じで指定する