概要
本章では、仮想コンソールやキーボードレイアウトに関する、様々なソフトウエア
パッケージに関する情報を提供しています。それぞれ
bash
,
cron
,
logrotate
などのソフトウエア
コンポーネントに関して言及していますが、これらは以前のリリース版から変更されたり
拡張されたりしているものであるためです。それらの変更が小規模であったり、
重要度の低いものであったりした場合でも、これらのコンポーネントはシステムと
強い結びつきがあるため、ユーザ側で既定の振る舞いを変更したい場合があります。
また本章では、言語や国固有の設定 (I18N や L10N と呼ばれるもの) にも言及して
います。
システム管理者や多くのユーザにとって、
The programs bash
,
cron
,
logrotate
,
locate
,
ulimit
,
free
などのプログラムはとても
重要な存在です。またマニュアルページや info ページは、それぞれコマンドに
関する情報源になっていますが、両方が常に利用できるというわけではありません。
また、 GNU Emacs は有名かつとても機能に富んだテキストエディタです。
bash は既定のシステムシェルです。ログインシェルとして使用した場合は、 いくつかの初期化ファイルを読み込みます。また、 bash は下記の順序で ファイルを読み込みます:
/etc/profile
~/.profile
/etc/bash.bashrc
~/.bashrc
カスタムな設定は、 ~/.profile
または
~/.bashrc
のいずれかに対して行ないます。これらの
ファイルを正しく処理するようにするには、それぞれ
/etc/skel/.profile
ファイルや
/etc/skel/.bashrc
ファイルを、ユーザのホーム
ディレクトリにコピーしてください。また、システム更新を行なった後は、
/etc/skel
から設定をコピーすることをお勧めします。
なお、下記のように実行すると、個人の設定を失わずに済みます:
mv ~/.bashrc ~/.bashrc.old cp /etc/skel/.bashrc ~/.bashrc mv ~/.profile ~/.profile.old cp /etc/skel/.profile ~/.profile
上記のように実行した後、それぞれ個人の設定を *.old
ファイルから反映し直してください。
事前に設定した時刻にコマンドを定期的かつ自動的に裏で実行させたい場合は、 cron を使うのが便利です。 cron は専用のタイムテーブル設定を持っていて、 システムで設定されているものが存在するほか、必要であればユーザ側でも設定を 行なうことができます。
cron のタイムテーブルは、 /var/spool/cron/tabs
ディレクトリ内に存在します。また、 /etc/crontab
には
システム全体に反映される cron テーブルが書かれています。このファイルの場合は
タイムテーブルとコマンドの間に、コマンドを直接実行させたいユーザのユーザ名を
入力します。 例11.1「/etc/crontab の項目」 の例では
root
が入力されています。
なお、パッケージ固有のタイムテーブルは /etc/cron.d
ファイル内に存在していて、上記と同様の書式になっています。詳しくは
/etc/cron.d
ファイルのマニュアルページ
(man cron) をお読みください。
なお、 crontab -e コマンドでは /etc/crontab
ファイルを編集することはできません。このファイルはエディタで直接開いて編集し、
保存しなければなりません。
また、
/etc/cron.hourly
,
/etc/cron.daily
,
/etc/cron.weekly
,
/etc/cron.monthly
の各ディレクトリには、多数のパッケージがシェルスクリプトをインストールします。
これらの動作は
/usr/lib/cron/run-crons
が制御しています。
/usr/lib/cron/run-crons
は、メインテーブル
(/etc/crontab
) で定義されているもので、 15 分間隔で
動作するように設定されています。そのため、実行されずに無視されるかもしれない
処理であっても、適切な日時に実行されるようになっています。
毎時間
や 毎日
などの
ように、定期的にメンテナンススクリプトを実行したい場合は、
/etc/crontab
の項目を利用してタイムスタンプを
定期的に除去してください (例11.2「/etc/crontab: タイムスタンプファイルの除去」
の例では、毎正時になる前に hourly
ファイルを削除したり、
毎日午前 2:14 に daily
ファイルを削除したりしています) 。
例11.2 /etc/crontab: タイムスタンプファイルの除去¶
59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly 14 2 * * * root rm -f /var/spool/cron/lastrun/cron.daily 29 2 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly 44 2 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly
もしくは、 cron.daily
が開始する時刻を、
/etc/sysconfig/cron
ファイル内の
DAILY_TIME
から設定することもできます。また、
MAX_NOT_RUN
の設定を行なうと、 DAILY_TIME
で指定した時刻に長時間コンピュータの電源を入れていなかった場合でも、毎日
処理するタスクを処理するようになります。 MAX_NOT_RUN
で指定できる最大値は 14 日です。
DAILY_TIME
for a longer period of time. The maximum
value of MAX_NOT_RUN
is 14 days.
システムメンテナンスジョブは、それらをわかりやすくするために、複数のスクリプト
として配布されています。これらは aaa_base
パッケージ内に含まれています。たとえば /etc/cron.daily
には、 suse.de-backup-rpmdb
,
suse.de-clean-tmp
, suse.de-cron-local
が含まれています。
システムサービス (デーモン) には多くの種類があり、
カーネルそれ自身のほか、システム状態を規則正しく記録したり、固有のイベントを
記録したりなどの処理をログファイルに行ないます。そのため、管理者は定期的に
その時点でのシステムの状態を確認できることになり、機能のエラーや失敗などを
認識し、ピンポイントの精度でトラブルを解決することができます。
これらのログファイルは通常、 FHS で規定されている /var/log
ディレクトリ内に保存され、日々増加していく形になります。
logrotate
パッケージは、これらのファイルの増加を
コントロールするための手助けを行ないます。
logrotate の設定は、 /etc/logrotate.conf
で行ないます。また、
include
を指定すると、読み込むべき追加のファイルを
指定することができます。ログファイルを生成するプログラムは、
/etc/logrotate.d
内に個別の設定ファイルを生成します。
上記のような設定を生成するものとして、たとえば
apache2
(/etc/logrotate.d/apache2
) や
syslogd
(/etc/logrotate.d/syslog
) などがあります。
例11.3 /etc/logrotate.conf の設定例¶
# 詳細は "man logrotate" をお読みください # ログファイルを週単位で切り替える weekly # 4 週間分までの過去分を保存する rotate 4 # 古いログファイルに切り替わったら、新しい (中身のない) ログファイルを生成する create # ログファイルを圧縮しておきたい場合、下記の行のコメントを外してください #compress # RPM パッケージは下記のディレクトリにログ切り替え情報を配置する include /etc/logrotate.d # lastlog や wtmp はパッケージ管理外であるため、独自に切り替える #/var/log/wtmp { # monthly # create 0664 root utmp # rotate 1 #} # システム固有のログは下記で設定します
logrotate は cron でコントロールするもので、毎日
/etc/cron.daily/logrotate
から呼び出されます。
locate コマンドはファイルを素早く検索するためのコマンドで、
標準インストールの範囲には含まれていません。必要であれば
findutils-locate
パッケージをインストールしてください。
また、 updatedb プロセスは毎晩または起動後 15 分経過すると、自動的に開始されます。
ulimit (user limits (ユーザ制限)) コマンドを利用すると、システム資源の使用について制限を設定することができるほか、 設定内容を表示させることができます。 ulimit は特に、 アプリケーションに対するメモリ制限を設定するのに便利です。アプリケーションが システム資源を多く使いすぎることを防ぎ、オペレーティングシステムがスローダウン したりハングアップしたりすることを防ぐことができます。
ulimit コマンドには様々なオプションを指定することができます。 メモリの使用量を制限したい場合は、 表11.1「ulimit: ユーザに対する資源設定」 にあるオプションをお使いください。
表11.1 ulimit: ユーザに対する資源設定¶
|
最大常駐セットサイズ |
|
シェルに対して解放する仮想メモリの最大値 |
|
スタックの最大サイズ |
|
作成するコアファイルの最大サイズ |
|
現在の制限全てを表示 |
システム全体の設定は、 /etc/profile
に指定することが
できます。ここではコアファイルの生成 (デバッグ 目的で
プログラマが必要とするもの) を有効にしています。通常のユーザは、システム管理者が
/etc/profile
で設定した値を増やすことができませんが、
独自の設定を ~/.bashrc
で指定することができます。
メモリの割り当ては KB (キロバイト) 単位で指定しなければなりません。 詳しい情報は、 man bash をお読みください。
全てのシェルが ulimit に対応しているわけではありません。
PAM (たとえば |
free コマンドは未使用の物理メモリ量と未使用のスワップ量を 表示するほか、カーネルで消費されているバッファとキャッシュの容量も表示する ことができます。このような 利用可能な RAM という考え方は、統合的なメモリ管理を行なうよりも前に存在した 考え方です。 空きメモリは無駄なメモリ の発想は Linux にも当てはまるもので、その結果として Linux は空きまたは未使用のメモリを生じ させずにキャッシュのバランスをとる動作を行なっています。
基本的にカーネルはアプリケーションやユーザデータに関する直接の知識は持って いません。その代わり、アプリケーションやユーザデータを ページキャッシュ 内で管理しています。メモリが不足しはじめると、それらの一部は それらがもともと mmap コマンド経由で読み込んでいた スワップパーティションやファイルに書き込まれるようになります (詳しくは man mmap をお読みください) 。
また、カーネルには上記以外のキャッシュ機能があります。たとえばネットワーク
アクセスのキャッシュ情報を保存する slab キャッシュ
などがあります。これは /proc/meminfo
内のカウンタ
間の違いを説明するもので、それらの多く (ただし全てではありません) は
/proc/slabinfo
からアクセスすることができます。
ただし、どれだけの RAM が現在使用中であるのかを知るのが目的である場合は、
/proc/meminfo
ファイルを読むのが良いでしょう。
いくつかの GNU アプリケーション (たとえば tar など) では、マニュアルページの
メンテナンスが行なわれていないものがあります。これらのコマンドの場合は、
より詳しい手順の書かれている info ページの概要を、 --help
オプションで得ることができます。 Info ページは GNU のハイパーテキストシステム
です。 Info ページ自身の情報については、 info
info
と入力することで表示することができます。 info ページは
emacs から emacs -f info
と入力する
ことで閲覧できるほか、 info と入力することで直接読むことも
できます。これ以外にも tkinfo, xinfo やヘルプシステムを利用して閲覧することも
できます。
マニュアルページを読むには、 man ページ名
のように入力します。異なるセクションに同じ名前のものが存在する
場合は、セクション番号の一覧が表示されます。この場合は表示したいセクション
番号を指定してください。何も入力せずにしばらく待つと、最初に該当する
マニュアルページが表示されます。
このような動作をシステム既定の動作に戻したい場合は、 ~/.bashrc
などの
シェル初期化ファイルに対し、 MAN_POSIXLY_CORRECT=1
を
設定してください。
GNU Emacs は複雑な作業環境です。本章では、 GNU Emacs が起動する際に処理される 設定ファイルについて述べています。本章よりも詳しい情報については、 http://www.gnu.org/software/emacs/ をご利用ください。
Emacs は起動時にいくつかのファイルを読み込み、ユーザやシステム管理者、もしくは
ディストリビュータのカスタマイズや事前設定を反映します。設定ファイル
~/.emacs
は /etc/skel
から
それぞれのユーザのホームディレクトリにインストールされます。
また .emacs
は、 /etc/skel/.gnu-emacs
を読み出す構成になっています。プログラムをカスタマイズするには、
.gnu-emacs
ファイルをホームディレクトリにコピー
(cp /etc/skel/.gnu-emacs ~/.gnu-emacs) し、必要な
設定を記入してください。
.gnu-emacs
は ~/.gnu-emacs-custom
ファイルを、 カスタムファイル
として定義しています。
Emacs 内で customize (カスタマイズ)
オプションを利用して
設定を行なうと、それらは ~/.gnu-emacs-custom
内に保存されます。
openSUSE では、 emacs
パッケージは /usr/share/emacs/site-lisp
内に
site-start.el
ファイルをインストールします。
このファイルは、 ~/.emacs
の初期化ファイルよりも先に
読み込まれるため、その他のスクリプトとあわせて、 Emacs のアドオンパッケージ
(たとえば psgml
) とともに配布される、
特別な設定ファイルを自動で読み込むことができるようになっています。この種類の
設定ファイルは /usr/share/emacs/site-lisp
にも含まれ、
suse-start-
で始まるファイル名になっています。ローカルの
システム管理者は、システム全体の設定を default.el
で
指定することができるようになっています。
これらのファイルについてさらに詳しい情報は、 Emacs の info ファイル内、 Init File 以下にあります: info:/emacs/InitFile これらのファイルの (必要に応じて) 読み込みを無効化するための情報についても、 この場所に書いてあります。
Emacs のコンポーネントは、複数のパッケージに分割されています:
emacs
:
基本パッケージ。
emacs-x11
:
X11 対応 のプログラム
(通常インストールされます) 。
emacs-nox
:
X11 に対応していない プログラム。
emacs-info
:
info フォーマットで書かれたオンラインドキュメント。
emacs-el
:
Emacs Lisp 形式の非コンパイルライブラリファイル。
実行に際して必要となるものではありません。
emacs-auctex
(LaTeX),
psgml
(SGML と XML),
gnuserv
(クライアント
およびサーバ動作) など:
必要に応じて様々なアドオンパッケージをインストールできます。
Linux はマルチユーザ・マルチタスクのシステムです。これらの機能はスタンドアロンの
PC システムであっても便利なもので、テキストモードで 6 つの仮想コンソールが
利用できるようになっています。それぞれは Alt+F1 から Alt+F6 までを利用して切り替えることができます。
7 番目のコンソールは X システム用に予約されているもので、 10 番目のコンソールは
カーネルのメッセージを表示するためのものです。 /etc/inittab
ファイルを編集することで、コンソールの割り当てを増やしたり減らしたりすることが
できます。
X システムをシャットダウンせずにコンソールを切り替えたい場合は、 Ctrl+Alt+F1 から Ctrl+Alt+F6 までの範囲でキーを押してください。 X システムに戻るには、 Alt+F7 を押します。
各プログラムによるキーボードマッピング機能を標準化するため、それぞれ下記の ファイルに変更を行ないます:
/etc/inputrc
/etc/X11/Xmodmap
/etc/skel/.emacs
/etc/skel/.gnu-emacs
/etc/skel/.vimrc
/etc/csh.cshrc
/etc/termcap
/usr/share/terminfo/x/xterm
/usr/share/X11/app-defaults/XTerm
/usr/share/emacs/バージョン
/site-lisp/term/*.el
これらの変更は terminfo の項目を使用する アプリケーションにだけ影響し、設定ファイルを直接変更する場合 (vi, emacs など) にのみ影響があります システムに同梱されていないアプリケーションは、これらの既定値には 影響されません。
X 環境下では、コンポーズキー (マルチキー) は
/etc/X11/Xmodmap
に説明されているとおりの方法で
有効にすることができます。
さらなる設定は、 X キーボード拡張 (XKB) を使用することで実現できます。 この拡張は GNOME (gswitchit) や KDE (kxkb) でも使用されています。
さらなる情報 | |
---|---|
XKB に関する詳しい情報は、
|
システムはかなり広い範囲で国際化対応が行なわれているため、各言語や国の 要件に合わせた設定を行なうことができます。国際化 (Internationalization, 略して I18N) とは、特定の地域化 (Localization, 略して L10N) を実施できるようにする意味で用いられる用語で、 それぞれ単語の最初と最後の文字と、省略されている文字数から略称が作られて います。
それぞれの国際化設定は、 /etc/sysconfig/language
ファイル内にある LC_
で始まる変数に設定を行なう
ことで実現します。これらの変数では 各国語対応 だけ
でなく、 メッセージ (翻訳), 文字セット
, 並べ替え順序, 日付と時刻
, 数字, 通貨 などの
領域にも適用されます。それぞれの分野は個別の変数を使用して別々に指定を
行なうこともできますし、ファイル language
から
間接的に指定することもできます (詳しくは locale の
マニュアルページをお読みください) 。
RC_LC_MESSAGES (メッセージ)
,
RC_LC_CTYPE (文字分類)
,
RC_LC_COLLATE (文字照合)
,
RC_LC_TIME (日付と時刻)
,
RC_LC_NUMERIC (数値)
,
RC_LC_MONETARY (通貨)
これらの変数は RC_
の接頭辞を抜いた形で
シェルに渡され、それぞれの範囲に適用されます。なお、関連するシェル
プロファイルは下記に示しています。また、現在の設定は
locale コマンドで表示できます。
RC_LC_ALL
この変数が設定されていれば、上記で説明した変数はそれぞれ上書き されます。
RC_LANG
上記の変数がいずれも設定されていない場合は、これが次点の候補と
なります。既定では RC_LANG
だけが設定
されます。この変数は、それぞれ個別に設定するよりも簡単に利用
できるようにするために設けられています。
ROOT_USES_LANG
yes
または no
の値を設定する
変数です。 no
に設定した場合は、
root
ユーザは常に POSIX
環境で作業を行なうことになります。
また、これらの値は YaST sysconfig エディタから設定することもできます 値として設定する内容には、言語コードのほか国コードやエンコーディング、 修飾子などを入れることができます。それぞれの要素はそれぞれ特殊文字で 下記のようにつなぎます:
LANG=<言語>[[_<国>].<エンコーディング>[@<修飾子>]]
言語と国については常にセットで指定してください。言語には ISO 639 に 準拠した値を設定します。詳しくは http://www.evertype.com/standards/iso639/iso639-en.html と http://www.loc.gov/standards/iso639-2/ をお読みください。 国については ISO 3166 に準拠した値を設定します。詳しくは http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html をお読みください。
なお、設定可能な値の組み合わせについては、 /usr/lib/locale
ディレクトリ内をご覧ください。このディレクトリ以下のサブディレクトリとして
それぞれ設定可能な組み合わせが存在しています。また、追加の説明ファイルに
ついては、 localedef コマンドを使用することで
/usr/share/i18n
ディレクトリ以下のファイルから作成する
ことができます。説明ファイルは glibc-i18ndata
パッケージの構成の一部です。たとえば en_US.UTF-8
(アメリカ英語) 向けの説明ファイルを作成するには、下記のように入力します:
localedef -i en_US -f UTF-8 en_US.UTF-8
LANG=en_US.UTF-8
上記は、インストール時にアメリカ英語を選択した場合に設定される言語の 既定値です。他の言語を選択した場合は、その選択した言語に合わせて 設定が作成されますが、 UTF-8 については常に有効になります。
LANG=en_US.ISO-8859-1
上記は言語を英語に、国をアメリカに設定し、文字セットを
ISO-8859-1
に設定した場合の例です。この文字セットでは
ユーロ記号に対応していませんが、 UTF-8
に対応して
いないプログラムを動作させる場合には便利な設定です。文字セットの定義
文字列 (この場合は ISO-8859-1
) は、 emacs などの
プログラム側で処理されます。
LANG=en_IE@euro
上記の例は、言語設定にユーロ記号を含めるよう明示的に設定している例です。 この設定は、既に UTF-8 ではユーロ記号が含まれることから、古い表現です。 この設定は ISO-8859-15 に対応していて UTF-8 には対応していない アプリケーションを動作させる場合にのみ有効です。
従来のリリースでは、 /etc/sysconfig/language
に
何らかの変更を行なった場合、 SuSEconfig を実行する
必要がありました。 SuSEconfig は /etc/SuSEconfig/profile
と /etc/SuSEconfig/csh.login
にそれぞれ設定を書き込む
ようになっていて、ログイン時に /etc/profile
(bash の場合)
または /etc/csh.login
(tcsh の場合) を読み込むことで
設定を受け継ぐようになっています。
新しいリリースでは、 /etc/SuSEconfig/profile
が
/etc/profile.d/lang.sh
に、
/etc/SuSEconfig/csh.login
が
/etc/profile.de/lang.csh
に置き換わっていますが、
古いほうのファイルが存在する場合も、古いほうのファイルは従来通り
読み込まれます。
この処理は下記のように行なわれます:
bash 向けには、 /etc/profile
が
/etc/profile.d/lang.sh
を呼び出すようになって
いて、ここから /etc/sysconfig/language
を
読み込みます。
tcsh 向けには、ログイン時に /etc/csh.login
が /etc/profile.d/lang.csh
を呼び出すように
なっていて、ここから /etc/sysconfig/language
を読み込みます。
このような仕組みにより、 SuSEconfig を実行することなく
/etc/sysconfig/language
ファイルが次回の
ログイン時に読み込まれるようになっています。
なお、ユーザ側でも自分用の設定を行なうことができます。これを行なうには、
~/.bashrc
に設定を行なってください。たとえば
システム側で設定されている en_US
をプログラムの
メッセージ表示に使いたくない場合は、上記のファイルに
LC_MESSAGES=es_ES
という行を追加すると、
メッセージはスペイン語で表示されるようになります。
~/.i18n
内でのロケール設定¶
お使いのシステム言語設定の既定値に満足できない場合は、 bash スクリプトの
書式で ~/.i18n
ファイルを作成することで、設定を変更
することができます。 ~/.i18n
ファイルは、
/etc/sysconfig/language
ファイルにあるシステムの
既定値を上書きすることができます。それぞれ RC_
の
接頭辞を抜いて変数を指定してください。たとえば RC_LANG
を上書きしたい場合は、 LANG
と指定して下記のように
指定します:
LANG=cs_CZ.UTF-8 LC_COLLATE=C
メッセージ のファイル分類では、決まり事として
関連する言語ディレクトリ (たとえば en
) だけを次点
候補として利用します。たとえば LANG
を
en_US
に設定している環境の場合、メッセージファイルが
/usr/share/locale/en_US/LC_MESSAGES
内に存在
しなかったときは、 /usr/share/locale/en/LC_MESSAGES
ファイルを次点候補とします。
言語の候補は自由に設定することができます。たとえばブルトン語が存在すれば そのメッセージを表示し、存在しない場合はフランス語で表示したい場合は下記 のようになります:
LANGUAGE="br_FR:fr_FR"
また、ガリシア語/スペイン語/ポルトガル語の順で表示したい場合は下記の ように設定します:
LANGUAGE="gl_ES:es_ES:pt_PT"
また必要であれば、ノルウェー語のニーノシュクとブークモールを試すような
設定を行なうこともできます (さらなる候補として no
も
指定しています):
LANG="nn_NO"
LANGUAGE="nn_NO:nb_NO:no"
または
LANG="nb_NO"
LANGUAGE="nb_NO:nn_NO:no"
なお、ノルウェー語では LC_TIME
もそれぞれ別々に
扱われます。
なお、このような設定を利用する場合には 1 つだけ問題が発生する可能性が
考えられます。それは、文字間を区切るセパレータ (区切り子) の存在です。
たとえば LANG
変数に 2 文字の言語コードだけを
指定したような場合 (例: de
) 、 glibc が使用する定義
ファイルが /usr/share/lib/de_DE/LC_NUMERIC
のような
ディレクトリに置かれていると、読み出すことができなくなってしまいます。
この場合は、 LC_NUMERIC
に
de_DE
のような指定を行なってください。
The GNU C Library Reference Manual 内の
「Locales and Internationalization」 章をお読みください。
この文書は glibc-info
パッケージに含まれています。
http://www.cl.cam.ac.uk/~mgk25/unicode.html から 参照できる、 Markus Kuhn 氏による UTF-8 and Unicode FAQ for Unix/Linux
howto
パッケージ に含まれる、 Bruno Haible 氏
による Unicode-Howto:
http://tldp.org/HOWTO/Unicode-HOWTO-1.html