第10章 SUSE Linuxの特別な機能

目次

10.1. 特殊ソフトウェアパッケージ
10.2. バーチャルコンソール
10.3. キーボードマッピング
10.4. 言語および国固有の設定

概要

この章では、まず、さまざまなソフトウェアパッケージ、バーチャルコンソール、およびキーボードレイアウトについて説明します。bashcron、およびlogrotateといったソフトウェアコンポーネントについても説明します。これらは、前回のリリースサイクルで変更または強化されたからです。これらのコンポーネントはそれほど重要ではないと思われるかもしれませんが、システムと密接に結びついているものなので、デフォルトの動作を変更したい場合もあることでしょう。この章の最後では、言語および国固有設定(I18NおよびL10N)について説明します。


10.1 特殊ソフトウェアパッケージ

bashcronlogrotatelocateulimit、およびfreeといったプログラム、およびresolv.confファイルは、システム管理者および多くのユーザにとって非常に重要です。manのページとinfoのページは、コマンドについての2つの役立つ情報源ですが、その両方が常に利用できるとは限りません。GNU Emacsは、人気のある、自由度に設定できるテキストエディタです。

10.1.1 Bashパッケージと/etc/profile

bashはSUSE Linuxのデフォルトのシェルです。ログインシェルとして使用する場合には、いくつかの初期化ファイルを読み込みます。Bashは、各ファイルを次の順序で処理します。

  1. /etc/profile

  2. ~/.profile

  3. /etc/bash.bashrc

  4. ~/.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ファイルから書き戻します。

10.1.2 cronパッケージ

コマンドを、前もって決めた時間に、定期的かつ自動的にバックグラウンドで実行したい場合、通常はcronを用います。cronは、特別な書式のいくつかのタイムテーブルによって駆動されます。その一部はシステムに付属しています。ユーザは必要に応じ、自分自身のテーブルを書くことができます。

cronテーブルは、/var/cron/tabsにあります。/etc/crontabはシステム全体のcronテーブルとして機能します。ユーザ名を入力して、タイムテーブルの後、コマンドの前に直接コマンドを実行するようにします。例 10.1. 「/etc/crontab内のエントリ」では、rootが入力されています。/etc/cron.dにあるパッケージ固有のテーブルも同じ形式を持ちます。cronのmanページを参照してください(man cron)。

例 10.1 /etc/crontab内のエントリ

1-59/5 * * * *   root   test -x /usr/sbin/atrun && /usr/sbin/atrun

/etc/crontabを、crontab -eコマンドによって編集することはできません。これは、エディタに直接ロードして、変更し、保存する必要があります。

複数のパッケージによりシェルスクリプトが/etc/cron.hourly/etc/cron.daily/etc/cron.weekly、および/etc/cron.monthlyの各ディレクトリにインストールされます。 これらの実行は、/usr/lib/cron/run-cronsによって制御されます。/usr/lib/cron/run-cronsは、15分おきにメインテーブル(/etc/crontab)から実行されます。これにより、無視されていたプロセスが、適切な時刻に実行されることが保証されます。

管理用のスクリプトを1時間ごと毎日、または他の特定の周期で実行するには、/etc/crontabのエントリで、定期的に、使用するタイムスタンプファイルを削除します(例 10.2. 「/etc/crontab:タイムスタンプファイルの削除」を参照してください。そこでは、hourlyという名前の付いているファイルが毎時59分に、dailyという名前の付いているファイルが毎日午前2:14に削除されるようになっています)。

例 10.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

日常のシステムメンテナンスジョブは、わかりやすいようにさまざまなスクリプトに分散されました。これらはパッケージaaa_baseに含まれています。たとえば、/etc/cron.dailyディレクトリには、コンポーネントsuse.de-backup-rpmdbsuse.de-clean-tmp、またはsuse.de-cron-localがあります。

10.1.3 ログファイル:パッケージlogrotate

カーネルそのものと一緒になって、定期的にシステムスのテータスおよび特定イベントをログファイルに記録するシステムサービス(デーモン)が数多くあります。これにより、管理者は、一定時におけるシステムのステータスを定期的にチェックし、エラーまたは障害のある機能を認識し、そのトラブルシューティングをピンポイントの精度で実行できます。これらのログファイルは、通常、FHSによって指定された/var/logに格納され、日々大きさを増していきます。こうしたログファイルの増大の制御には、logrotateパッケージが役立ちます。

logrotateは、 /etc/logrotate.confファイルを使って設定します。特に、includeの指定では主に、読み込む追加のファイルを設定します。SUSE Linuxでは、ログファイルを作成する各プログラムの設定ファイルは、/etc/logrotate.dにインストールされるようにしています。たとえば、そのようなプログラムは、apache2パッケージ(/etc/logrotate.d/apache2)およびsyslogdパッケージ(/etc/logrotate.d/syslog)に付属しています。

例 10.3 /etc/logrotate.confの例


# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own lastlog or wtmp - we'll rotate them here
#/var/log/wtmp {
#    monthly
#    create 0664 root utmp
#    rotate 1
#}

# system-specific logs may be also be configured here.

logrotateは、cronを通じて制御され、毎日/etc/cron.daily/logrotateによって呼び出されます。

[Important]重要項目

作成オプションでは、管理者が/etc/permissions*内に定義したすべての設定が読み取られます。人による変更で矛盾が出ないことを確認してください。

10.1.4 locate コマンド

ファイルをすばやく検索するためのlocateコマンドは、標準のインストール済みソフトウェアには含まれていません。必要であれば、パッケージfind-locateをインストールしてください。updatedbプロセスは、毎晩、またはシステムをブートしてから約15分で自動的に起動します。

10.1.5 ulimitコマンド

ulimit (使用制限)コマンドを使用すると、システムリソースの使用量に制限を設けたり、これらの制限を表示したりすることができます。ulimitは、アプリケーションでの使用可能メモリを制限する場合に特に便利です。1つのアプリケーションが大量のメモリを独占するとシステムが停止してしまいますが、これを使用することで、それが避けられます。

ulimitコマンドには、さまざまなオプションがあります。メモリの使用量を制限するには、表 10.1. 「ulimit:ユーザのためのリソースの設定」に示すオプションを使用します。

表 10.1 ulimit:ユーザのためのリソースの設定

-m

物理メモリの最大サイズ

-v

仮想メモリの最大サイズ

-s

スタックの最大サイズ

-c

コアファイルの最大サイズ

-a

制限セットの表示

システム全体のエントリは、/etc/profileで設定できます。コアファイルの作成を有効にします。 これはプログラマがデバッグを行うために必要です。通常のユーザは、/etc/profileファイルでシステム管理者が指定した値を大きくすることはできませんが、~/.bashrcに特別なエントリを作成することは可能です。

例 10.4 ulimit:~/.bashrc での設定

# Limits of physical memory:
ulimit -m 98304
 
# Limits of virtual memory:
ulimit -v 98304

メモリの量は、KB単位で指定する必要があります。詳細については、man bashコマンドでmanページを参照してください。

[Important]重要項目

すべてのシェルがulimitディレクティブをサポートするわけではありません。ユーザが制約を包括的に設定する必要がある場合、PAM(たとえば、pam_limits)を使用すれば、包括的な調整が可能になります。

10.1.6 freeコマンド

現在使用されているRAMの容量を確認することが目的ならば、freeコマンドは、少々誤解を招くかもしれません。そのような情報は、/proc/meminfoで表示できます。今日では、Linuxのような最新のオペレーティングシステムにアクセスする場合、ユーザはメモリについてそれほど深刻に考える必要はありません。利用可能な RAM という概念は、統一的なメモリ管理が生まれる以前の遺物です。空きメモリは悪いメモリというスローガンは、Linux にぴったりです。結果として、Linuxでは、空きメモリや未使用メモリを実質的に発生させず、キャッシュの量を調整するよう努力が重ねられてきました。

基本的に、カーネルは、アプリケーションやユーザデータについての直接的な知識はありません。その代わりにカーネルは、ページキャッシュのアプリケーションとユーザデータを管理します。メモリが不足すると、その一部はスワップパーティションかファイルに書き込まれ、そこから mmapコマンドで読み込まれます(man mmap コマンドでmanページを参照)。

カーネルには、たとえば、ネットワークアクセスに使用されたキャッシュが格納されているslabキャッシュなどの別のキャッシュがあります。これが/proc/meminfoのカウンタ間の違いになります。全部ではありませんが、これらのキャッシュのほとんどは、/proc/slabinfoでアクセスできます。

10.1.7 /etc/resolv.confファイル

ドメイン名は、ファイル/etc/resolv.confを使用して管理されます。詳細については、第20章 ドメインネームシステムを参照してください。

このファイルを更新できるのは、スクリプト/sbin/modify_resolvconfのみで、他のプログラムには/etc/resolv.confファイルを直接変更するパーミッションがありません。このルールを強制することによってのみ、システムのネットワークの環境設定と関連のファイルが一貫性のある状態に維持されます。

10.1.8 manページとinfoページ

一部のGNUアプリケーション(tarなど)では、manページが提供されなくなりました。manページが用意されていたコマンドについては、--helpオプションを使用して簡単な概要を表示するか、詳細な手順を説明するinfoページを使用します。 infoは、GNUのハイパーテキストシステムです。このシステムについての説明は、info infoを入力して表示します。Info ページは、emacs -f infoコマンドを入力してEmacsを起動するか、コンソールで直接infoと入力します。あるいは、tkinfo、xinfo、またはSUSEヘルプシステムを使用して、infoページを表示します。

10.1.9 GNU Emacs用の設定

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-customcustom-fileとして定義します。ユーザがEmacsのcustomizeオプションで設定を作成すると、その設定が~/.gnu-emacs-customに保存されます。

を使用すると、emacsパッケージでファイルsite-start.elがディレクトリー/usr/share/emacs/site-lispにインストールされます。ファイルsite-start.elは、初期化ファイル~/.emacsの前に読み込まれます。その他では、site-start.elによって、psgmlなど、Emacsアドオンパッケージによって配布された特殊な設定ファイルが自動的に読み込まれます。このタイプの設定ファイルも/usr/share/emacs/site-lispにあり、常にsuse-start-で始まる名前になっています。ローカルシステム管理者は、 default.el内にシステム全体の設定を指定できます。

これらのファイルに関する詳しい説明は、Init File:info:/emacs/InitFileの下のEmacs infoファイルにあります。必要な場合、これらのファイルの読み込みを防止する方法に関する説明もこの場所にあります。

Emacsのコンポーネントは、次のいくつかのパッケージに分かれています。

  • 基本パッケージemacs

  • emacs-x11(通常インストール済み):X11サポートのあるプログラム。

  • emacs-nox:X11サポートのないプログラム。

  • emacs-nox:info形式のオンライン文書。

  • emacs-el:Emacs Lisp内の未コンパイルのライブラリファイル。これらは、実行時には必要ありません。

  • 必要なら多くのアドオンパッケージをインストールできます。emacs-auctex (LaTeX版),、 psgml (SGMLおよびXML版)、 gnuserv (クライアント/サーバ運用用)、その他。