23 特別なシステム機能 #
この章では、まず、さまざまなソフトウェアパッケージ、バーチャルコンソール、およびキーボードレイアウトについて説明します。bash
、cron
、およびlogrotate
といったソフトウェアコンポーネントについても説明します。これらは、前回のリリースサイクルで変更または強化されたからです。これらのコンポーネントはそれほど重要ではないと思われるかもしれませんが、システムと密接に結びついているものなので、デフォルトの動作を変更することをお勧めします。この章の最後では、言語および国固有設定(I18NおよびL10N)について説明します。
23.1 特殊ソフトウェアパッケージ #
bash
、cron
、logrotate
、locate
、ulimit
、free
といったプログラムは、システム管理者および多くのユーザにとって非常に重要です。manのページとinfoのページは、コマンドについての2つの役立つ情報源ですが、その両方が常に利用できるとは限りません。GNU Emacsは、人気のある、自由度に設定できるテキストエディタです。
23.1.1 bash
パッケージと/etc/profile
#
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
ファイルから書き戻します。
23.1.2 cronパッケージ #
cronを使用すると、事前に定義された時間にバックグラウンドでコマンドを自動的に実行できます。cronは特別な形式のタイムテーブルを使用し、ツールには複数のデフォルトのタイムテーブルが付属しています。必要に応じて、ユーザはカスタムテーブルを指定することもできます。
cronテーブルは、/var/cron/tabs
にあります。/etc/crontab
はシステム全体のcronテーブルとして機能します。ユーザ名を入力して、タイムテーブルの後、コマンドの前に直接コマンドを実行するようにします。例23.1「/etc/crontab内のエントリ」では、root
が入力されています。/etc/cron.d
にあるパッケージ固有のテーブルも同じ形式です。cron
のマニュアルページを参照してください(man cron
使用)。
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
)から実行されます。これにより、無視されていたプロセスが、適切な時刻に実行されることが保証されます。
hourly
、daily
、または他の特定の周期の管理スクリプトをカスタム時間で実行するには、/etc/crontab
のエントリを使用して、定期的にタイムスタンプファイルを削除します(例23.2「/etc/crontab:タイムスタンプファイルの削除」を参照してください。そこでは、hourly
という名前の付いているファイルが毎時59分に、daily
という名前の付いているファイルが毎日午前2時14分に削除されるようになっています)。
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
または、/etc/sysconfig/cron
のDAILY_TIME
をcron.daily
を起動する時刻に設定します。MAX_NOT_RUN
の設定では、ユーザが長時間、指定したDAILY_TIME
にコンピュータを起動しなくても、毎日のタスクの実行がトリガされるようにします。MAX_NOT_RUN
の最大値は14日です。
日常のシステムメンテナンスジョブは、わかりやすいようにさまざまなスクリプトに分散されています。これらはパッケージaaa_base-extras
に含まれています。/etc/cron.daily
に含まれています。このパッケージには、たとえば、コンポーネントsuse.de-backup-rpmdb
、suse.de-clean-tmp
、またはsuse.de-cron-local
が含まれています。
23.1.3 Cronステータスメッセージの停止 #
cronステータスメッセージによって大量の電子メールが生成されるのを避けるため、新しいインストールでは、/etc/sysconfig/cron
のデフォルト値SEND_MAIL_ON_NO_ERROR
が「no
」に設定されています。cronのマニュアルページで説明されているように、この設定が「no
」になっていても、cronのデータ出力は引き続きMAILTO
アドレスに送信されます。
アップデートの場合は、ニーズに合わせてこれらの値を設定することをお勧めします。
23.1.4 ログファイル:パッケージlogrotate #
カーネルそのものと一緒になって、定期的にシステムのステータスおよび特定イベントをログファイルに記録するシステムサービス(「デーモン」)が複数あります。これにより、管理者は、一定間隔でシステムのステータスを定期的にチェックし、エラーまたは障害のある機能を認識し、そのトラブルシューティングをピンポイントで実行できます。通常、これらのログファイルは、FHSで指定されるように/var/log
内に格納され、毎日記録が追加されるためにサイズが増大します。logrotate
パッケージを使用して、これらのファイルが増大するのを制御できます。詳細については、Section 3.3, “Managing Log Files with logrotate
”を参照してください。
23.1.5 locateコマンド #
ファイルをすばやく検索するためのコマンドlocate
は、標準のインストール済みソフトウェアには含まれていません。必要に応じて、findutils-locate
の後継パッケージであるmlocate
パッケージをインストールします。updatedbプロセスは、毎晩、またはシステムをブートしてから約15分で自動的に起動します。
23.1.6 ulimitコマンド #
ulimit
(user limits)コマンドを使用すると、システムリソースの使用量に制限を設定して、それを表示できます。ulimit
はアプリケーションが使用できるメモリの制限に特に役立ちます。これを使用して、アプリケーションがシステムリソースを過剰に使用して速度が低下したり、オペレーティングシステムをハングさせたりすることを防止できます。
ulimit
コマンドには、さまざまなオプションがあります。メモリの使用量を制限するには、表23.1「ulimit
:ユーザのためのリソースの設定」に示すオプションを使用します。
ulimit
:ユーザのためのリソースの設定 #
|
最大常駐セットサイズ |
|
シェルが使用できる仮想メモリの最大量 |
|
最大スタックサイズ |
|
作成されるコアファイルの最大サイズ |
|
すべての現在の制限値の報告 |
システム全体のデフォルトエントリは、/etc/profile
で設定されます。このファイルを直接編集することはお勧めしません。システムをアップグレードすると変更内容が上書きされるためです。システム全体のプロファイル設定をカスタマイズするには、/etc/profile.local
を使用します。ユーザごとの設定は、~USER/.bashrc
で行う必要があります。
# Limits maximum resident set size (physical memory): ulimit -m 98304 # Limits of virtual memory: ulimit -v 98304
メモリ割り当ては、KB単位で指定する必要があります。詳細については、man bash
コマンドでマニュアルページを参照してください。
ulimit
のサポート
すべてのシェルがulimit
ディレクティブをサポートするわけではありません。PAM (pam_limits
など)は、ulimit
の代わりに使用できる包括的な調整手段を提供しています。
23.1.7 freeコマンド #
free
コマンドは、空いている物理メモリ、使用済み物理メモリ、システム内のスワップ領域のほか、カーネルによって消費されたバッファとキャッシュの合計量を表示します。利用可能な RAMという概念は、統一的なメモリ管理が生まれる以前の遺物です。空きメモリは悪いメモリというスローガンは、Linux にぴったりです。結果として、Linuxでは、空きメモリや未使用メモリを実質的に発生させず、キャッシュの量を調整するよう努力が重ねられてきました。
カーネルは、アプリケーションやユーザデータについての直接的な情報を持っていません。その代わりにカーネルは、ページキャッシュのアプリケーションとユーザデータを管理します。メモリが不足すると、その一部はスワップパーティションかファイルに書き込まれ、そこからmmap
コマンドで読み込まれます(man mmap
コマンドでmanページを参照)。
カーネルには、たとえば、ネットワークアクセスに使用されたキャッシュが格納されているslabキャッシュなどの別のキャッシュがあります。これが/proc/meminfo
のカウンタ間の違いになります。全部ではありませんが、これらのキャッシュのほとんどは、/proc/slabinfo
でアクセスできます。
ただし、目的が現在のRAM使用量である場合は、/proc/meminfo
で情報を見つけてください。
23.1.8 manページとinfoページ #
一部のGNUアプリケーション(tarなど)では、manページが提供されなくなりました。manページが用意されていたコマンドについては、--help
オプションを使用して簡単な概要を表示するか、詳細な手順を説明するinfoページを使用します。infoは、GNUのハイパーテキストシステムです。このシステムについての説明は、「info
info
」と入力してください。Info ページは、「emacs
-f info
」コマンドを入力してEmacsを起動するか、コンソールで直接「info
」と入力します。あるいは、tkinfo、xinfo、またはヘルプシステムを使用して、infoページを表示できます。
23.1.9 man
コマンドを使用したマニュアルページの選択 #
マニュアルページを読み込むには、「man
MAN_PAGE」を入力します。同じ名前でさまざまなセクションに存在するマニュアルページは、対応するセクション番号とともに一覧表示されます。表示するマニュアルページを選択します。セクション番号を数秒内に入力しないと、最初のマニュアルページが表示されます。
これをデフォルトのシステム動作に戻すには、~/.bashrc
などのシェル初期化ファイルでMAN_POSIXLY_CORRECT=1
を設定します。
23.1.10 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-custom
ファイルをcustom-file
として定義します。Emacsでcustomize
を使用して設定を行う場合、この設定は、~/.gnu-emacs-custom
に保存されます。
SUSE Linux Enterprise Serverでは、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
でシステム全体の設定を指定できます。
これらのファイルの詳細については、info:/emacs/InitFile
の「Init File」にあるEmacs情報ファイルを参照してください。これらのファイルを無効にする(必要な場合)方法についても記載されています。
Emacsのコンポーネントは、いくつかのパッケージに分かれています。
基本パッケージの
emacs
。emacs-x11
(通常インストールされている): X11をサポートしているプログラム。emacs-nox
: X11をサポートしていないプログラム。emacs-info
: info形式のオンラインマニュアル。emacs-el
: Emacs Lisp内のコンパイルされていないライブラリファイル。これらは、実行時には必要ありません。必要に応じて
emacs-auctex
(LaTeX)、psgml
(SGMLおよびXML)、gnuserv
(クライアント/サーバ操作)など、さまざまなアドオンパッケージをインストールできます。
23.2 バーチャルコンソール #
Linuxは、マルチユーザ、マルチタスクのシステムです。これらの機能は、スタンドアロンのPCシステム上でも利用できます。テキストモードでは、6つのバーチャルコンソールが使用できます。Alt–F1~Alt–F6を使用して切り替えます。7番目のコンソールはX用に予約されており、10番目のコンソールにはカーネルメッセージが表示されます。
Xを終了せずにXからコンソールに切り替えるには、Ctrl–Alt–F1~Ctrl–Alt–F6を使用します。Xに戻るには、Alt–F7を押します。
23.3 キーボードマッピング #
プログラムのキーボードマッピングを標準化するために、次のファイルに変更が行われました。
/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/VERSION/site-lisp/term/*.el
これらの変更は、terminfo
エントリを使用するアプリケーション、またはその設定ファイルが直接変更されるアプリケーション(vi
、emacs
など)にのみ影響します。システムに付随しないアプリケーションは、これらのデフォルト値に合わせる必要があります。
Xの下では、<compose>キー(マルチキー)を/etc/X11/Xmodmap
で説明されているように有効化できます。
詳しい設定は、Xキーボード拡張(XKB)を使って行うことができます。この拡張機能は、デスクトップ環境GNOME (gswitchit)によっても使用されます。
XKBに関する情報は、/usr/share/doc/packages/xkeyboard-config
(xkeyboard-config
パッケージの一部)に記載されている文書を参照してください。
23.4 言語および国固有の設定 #
本システムは、非常に広い範囲で国際化されており、現地の状況に合わせて柔軟に変更できます。国際化(「I18N」)が特定のローカライズ(「L10N」)を可能にします。I18NとL10Nという略語は、語の最初と最後の文字の間に、省略されている文字数を挟み込んだ表記です。
設定は、ファイル/etc/sysconfig/language
の変数LC_
で定義します。これは、単なる現地語サポートだけでなく、Messages(メッセージ) (言語)、Character Set(文字セット)、Sort Order(ソート順)、Time and Date(時刻と日付)、Numbers(数字)およびMoney(通貨)の各カテゴリも指します。これらのカテゴリはそれぞれ、独自の変数を使用して直接定義することも、ファイルlanguage
にあるマスタ変数を使用して間接的に定義することも可能です(locale
コマンドでmanページを参照)。
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=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]
23.4.1 例 #
言語コードと国コードは必ず一緒に設定する必要があります。言語の設定は、http://www.evertype.com/standards/iso639/iso639-en.htmlおよびhttp://www.loc.gov/standards/iso639-2/で入手できる、ISO 639規格に従います。国コードはISO 3166に一覧にされています(http://en.wikipedia.org/wiki/ISO_3166を参照)。
使用可能な説明ファイルが/usr/lib/locale
に存在する場合のみ、値を設定する意味があります。追加の記述ファイルは、/usr/share/i18n
のファイルを使用し、コマンド localedef
を実行して作成できます。記述ファイルは、glibc-i18ndata
パッケージに含まれています。en_US.UTF-8
の説明ファイル(英語および米国)は以下のように作成します。
localedef -i en_US -f UTF-8 en_US.UTF-8
-
LANG=en_US.UTF-8
インストール時にAmerican Englishを選択すると、これがデフォルトの設定になります。他の言語を選択した場合、その言語が有効になりますが、文字コードは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
への変更は、次のプロセスチェーンで有効になります。
Bashの場合は、
/etc/profile
によって読み込まれた/etc/profile.d/lang.sh
が、/etc/sysconfig/language
を解析します。tcshの場合は、ログイン時に
/etc/csh.login
によって読み込まれた/etc/profile.d/lang.csh
が、/etc/sysconfig/language
を解析します。
これによって、/etc/sysconfig/language
に加えられたすべての変更が、これらを手動で有効にしなくても、各シェルへの次回ログイン時に使用可能になります。
ユーザは、同様に~/.bashrc
ファイルを編集して、システムのデフォルトを上書きすることができます。たとえば、システム設定のen_US
をプログラムメッセージに使用しない場合は、LC_MESSAGES=es_ES
を指定してメッセージが英語の代わりにスペイン語で表示されるようにします。
23.4.2 ~/.i18n
でのロケール設定 #
ロケールシステムのデフォルトが不十分な場合、Bashスクリプトの構文に従って~/.i18n
の設定を変更してください。~/.i18n
内のエントリは、/etc/sysconfig/language
のシステムデフォルトを上書きします。同じ変数名を使用しますが、RC_
ネームスペースプレフィクスは付けません。たとえば、RC_LANG
ではなく、LANG
を使用します。
LANG=cs_CZ.UTF-8 LC_COLLATE=C
23.4.3 言語サポートの設定 #
カテゴリMessagesのファイルは、フォールバックを確保するため、対応する言語ディレクトリ(たとえば、en
)にのみ格納されることになっています。たとえばLANG
をen_US
に設定したが、messageファイルが/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
がde
のような2文字の言語コードにのみ設定されているのに、glibcが使用している定義ファイル/usr/share/lib/de_DE/LC_NUMERIC
に存在している場合に生じます。それで、区切り文字の定義がシステムに認識されるようにするには、LC_NUMERIC
をde_DE
に設定する必要があります。
23.4.4 詳細情報 #
『The GNU C Library Reference Manual』の「Locales and Internationalization」の章。glibc-info
パッケージに格納されています。
パッケージは、SUSE Linux Enterprise SDKから入手できます。SDKは、SUSE Linux Enterprise用のモジュールで、SUSEカスタマーセンターからオンラインチャネル経由で入手できます。または、http://download.suse.com/にアクセスし、SUSE Linux Enterprise Software Development Kit
を検索してダウンロードします。詳細については、第14章 「モジュール、拡張機能、サードパーティ製アドオン製品のインストール」を参照してください。『UTF-8 and Unicode FAQ for Unix/Linux』、Markus Kuhn著。Webページhttp://www.cl.cam.ac.uk/~mgk25/unicode.html (現在のアドレス)を参照してください。
『Unicode-Howto』、Bruno Haible著(http://tldp.org/HOWTO/Unicode-HOWTO-1.html)