30 特別なシステム機能 #
この章では、まず、特定のソフトウェアパッケージ、バーチャルコンソール、およびキーボードレイアウトについて説明します。bash
、cron
、logrotate
といったソフトウェアコンポーネントについても説明します。これらは、前回のリリースサイクルで変更または強化されたからです。これらのコンポーネントはそれほど重要ではないと思われるかもしれませんが、システムと密接に結びついているものなので、デフォルトの動作を変更することをお勧めします。この章の最後では、言語および国固有設定(I18NおよびL10N)について説明します。
30.1 特殊ソフトウェアパッケージに関する情報 #
次の章では、次のツール(bash
、cron
、logrotate
、locate
、ulimit
、free
)に関する基本的な情報を提供します。
30.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
ファイルから書き戻します。
30.1.2 cronパッケージ #
cron
を使用すると、事前に定義された時間にバックグラウンドでコマンドを自動的に実行できます。cron
は特別な形式のタイムテーブルを使用し、ツールには複数のデフォルトのタイムテーブルが付属しています。必要に応じて、ユーザはカスタムテーブルを指定することもできます。
cronテーブルは/var/spool/cron/tabs
に置かれます。/etc/crontab
はシステム全体のcronテーブルとして機能します。ユーザ名を入力して、タイムテーブルの後、コマンドの前に直接コマンドを実行するようにします。例30.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
のエントリを使用して、定期的にタイムスタンプファイルを削除します(例30.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日です。
30.1.3 cronステータスメッセージの停止 #
cronステータスメッセージによって大量の電子メールが生成されるのを避けるため、新しいインストールでは、/etc/sysconfig/cron
のデフォルト値SEND_MAIL_ON_NO_ERROR
が「no
」に設定されています。cronのマニュアルページで説明されているように、この設定が「no
」になっていても、cronのデータ出力は引き続きMAILTO
アドレスに送信されます。
アップデートの場合は、ニーズに合わせてこれらの値を設定することをお勧めします。
30.1.4 ログファイル: パッケージlogrotate #
カーネルそのものと一緒になって、定期的にシステムのステータスおよび特定イベントをログファイルに記録するシステムサービス(「デーモン」)が複数あります。これにより、管理者は、一定間隔でシステムのステータスを定期的にチェックし、エラーまたは障害のある機能を認識し、そのトラブルシューティングをピンポイントで実行できます。通常、これらのログファイルは、FHSで指定されるように/var/log
内に格納され、毎日記録が追加されるためにサイズが増大します。logrotate
パッケージを使用して、これらのファイルが増大するのを制御できます。詳細については、Section 3.3, “Managing log files with logrotate
”を参照してください。
30.1.5 locate
コマンド #
ファイルをすばやく検索するためのコマンドlocate
は、標準のインストール済みソフトウェアには含まれていません。必要に応じて、findutils-locate
の後継パッケージであるmlocate
パッケージをインストールします。updatedb
プロセスは、毎晩、またはシステムをブートしてから約15分で自動的に起動します。
30.1.6 ulimit
コマンド #
ulimit
(user limits)コマンドを使用すると、システムリソースの使用量に制限を設定して、それを表示できます。ulimit
はアプリケーションが使用できるメモリの制限に特に役立ちます。これを使用して、アプリケーションがシステムリソースを過剰に使用して速度が低下したり、オペレーティングシステムをハングさせたりすることを防止できます。
ulimit
コマンドには、さまざまなオプションがあります。メモリの使用量を制限するには、表30.1「ulimit
: ユーザのためのリソースの設定」に示すオプションを使用します。
ulimit
: ユーザのためのリソースの設定 #
|
最大常駐セットサイズ |
|
シェルが使用できる仮想メモリの最大量 |
|
最大スタックサイズ |
|
作成されるコアファイルの最大サイズ |
|
すべての現在の制限値の報告 |
システム全体のデフォルトエントリは、/etc/profile
で設定されます。このファイルを直接編集することはお勧めしません。システムをアップグレードすると変更内容が上書きされるためです。システム全体のプロファイル設定をカスタマイズするには、/etc/profile.local
を使用します。ユーザごとの設定は、~USER/.profile
で行う必要があります。
ulimit
: ~/.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
の代わりに使用できる包括的な調整手段を提供しています。
30.1.7 free
コマンド #
free
コマンドは、空いている物理メモリ、使用済み物理メモリ、システム内のスワップ領域のほか、カーネルによって消費されたバッファとキャッシュの合計量を表示します。利用可能な RAMという概念は、統一的なメモリ管理が生まれる以前の遺物です。空きメモリは悪いメモリというスローガンは、Linux にぴったりです。結果として、Linuxでは、空きメモリや未使用メモリを発生させず、キャッシュの量を調整するよう努力が重ねられてきました。
カーネルは、アプリケーションやユーザデータについての直接的な情報を持っていません。その代わりにカーネルは、ページキャッシュのアプリケーションとユーザデータを管理します。メモリが不足すると、その一部はスワップパーティションかファイルに書き込まれ、そこからmmap
コマンドで読み込まれます(man mmap
コマンドでmanページを参照)。
カーネルには、たとえば、ネットワークアクセスに使用されたキャッシュが格納されているslabキャッシュなどの別のキャッシュがあります。これが/proc/meminfo
のカウンタ間の違いになります。全部ではありませんが、これらのキャッシュのほとんどは、/proc/slabinfo
でアクセスできます。
ただし、目的が現在のRAM使用量である場合は、/proc/meminfo
で情報を見つけてください。
30.1.8 manページとinfoページ #
一部のGNUアプリケーション(tarなど)では、manページが提供されなくなりました。manページが用意されていたコマンドについては、--help
オプションを使用して簡単な概要を表示するか、詳細な手順を説明するページを使用します。infoは、GNUのハイパーテキストシステムです。このシステムについての説明は、「info
info
」と入力してください。Infoページは、「emacs
-f info
」コマンドを入力してEmacsを起動するか、コンソールで直接「info
」と入力します。あるいは、tkinfo、xinfo、またはヘルプシステムを使用して、infoページを表示できます。
30.1.9 man
コマンドを使用したマニュアルページの選択 #
マニュアルページを読み込むには、「man
MAN_PAGE」を入力します。同じ名前でさまざまなセクションに存在するマニュアルページは、対応するセクション番号とともに一覧表示されます。表示するマニュアルページを選択します。セクション番号を数秒内に入力しないと、最初のマニュアルページが表示されます。
これをデフォルトのシステム動作に戻すには、~/.bashrc
などのシェル初期化ファイルでMAN_POSIXLY_CORRECT=1
を設定します。
30.1.10 GNU Emacs用の設定 #
GNU Emacsは、複合作業環境です。ここでは、GNU Emacsを起動する際に処理される設定ファイルについて説明します。詳細については、https://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 Desktopでは、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
(クライアント/サーバ操作)など、さまざまなアドオンパッケージをインストールできます。
30.2 バーチャルコンソール #
Linuxは、マルチユーザ、マルチタスクのシステムです。これらの機能は、スタンドアロンのPCシステム上でも利用できます。テキストモードでは、6つのバーチャルコンソールが使用できます。Alt–F1~Alt–F6を使用して切り替えます。7番目のコンソールはX用に予約されており、10番目のコンソールにはカーネルメッセージが表示されます。
Xを終了せずにXからコンソールに切り替えるには、Ctrl–Alt–F1~Ctrl–Alt–F6を使用します。Xに戻るには、Alt–F7を押します。
30.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)を使って行うことができます。
XKBに関する情報は、/usr/share/doc/packages/xkeyboard-config
(xkeyboard-config
パッケージの一部)に記載されている文書を参照してください。
30.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
またはctype
(デフォルト)に設定できます。yes
に設定される場合、root
は言語および国固有の設定を使用します。設定されていない場合、システム管理者は常にPOSIX環境で作業します。
変数は、YaSTのsysconfigエディタで設定できます。このような変数の値には、言語コード、国コード、エンコーディング、および修飾子が入っています。個々のコンポーネントは特殊文字で結合されます。
LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]
30.4.1 システム全体のロケール設定 #
systemd
は初期起動時に/etc/locale.conf
を読み込みます。このファイルで設定されたロケール設定は、個別の設定がない限り、すべてのサービスまたはユーザによって継承されます。
以前のバージョンのSUSE Linux Enterprise Desktopは、/etc/sysconfig/language
、/etc/sysconfig/keyboard
、および/etc/sysconfig/console
からロケール設定を読み込みます。SUSE Linux Enterprise Desktop
15 GA以降、これらのファイルは廃止されたものとみなされています。systemd
では、これらのファイルから設定を読み込まなくなりました。代わりに、systemd
では、/etc/locale.conf
を読み込みます。
ただし、/etc/sysconfig/language
で定義された変数は引き続き使用されます。システムワイドロケールを上書きし、ユーザシェルの異なるロケール設定を定義するために使用できます(30.4.2項 「例」を参照)。
システム全体のロケールを設定するには、次のいずれかを実行できます。
/etc/locale.conf
に設定を書き込む。各行は環境に似た変数割り当てです(変数のリストについては、man 5 locale.conf
を参照してください):LANG=de_DE.UTF-8
設定を微調整するには、1行に1つ変数を追加することができます。
localectl
コマンドを使用する:#
localectl
set-locale LANG=de_DE.UTF-8ここでも、
localectl set-locale
コマンドの後に追加の変数を指定することもできます。
systemdパッケージの更新中に古いシステムとの後方互換性を維持するために、言及されているすべての変数は、まだ定義されていない場合は、sysconfigから最終的な宛先にマイグレートされます。
30.4.2 例 #
言語コードと国コードは必ず一緒に設定する必要があります。言語の設定は、https://www.evertype.com/standards/iso639/iso639-en.htmlおよびhttps://www.loc.gov/standards/iso639-2/で入手できる、ISO 639規格に従います。国コードはISO 3166に一覧にされています(https://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
を指定してメッセージが英語の代わりにスペイン語で表示されるようにします。
30.4.3 ~/.i18n
でのロケール設定 #
ロケールシステムのデフォルトが不十分な場合、Bashスクリプトの構文に従って~/.i18n
の設定を変更してください。~/.i18n
内のエントリは、/etc/sysconfig/language
のシステムデフォルトを上書きします。同じ変数名を使用しますが、RC_
ネームスペースプレフィクスは付けません。たとえば、RC_LANG
の代わりにLANG
を使用します。
LANG=cs_CZ.UTF-8 LC_COLLATE=C
30.4.4 言語サポートの設定 #
カテゴリMessagesのファイルは、フォールバックを確保するため、対応する言語ディレクトリ(たとえば、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
がde
のような2文字の言語コードにのみ設定されているのに、glibcが使用している定義ファイル/usr/share/lib/de_DE/LC_NUMERIC
に存在している場合に生じます。それで、区切り文字の定義がシステムに認識されるようにするには、LC_NUMERIC
をde_DE
に設定する必要があります。
30.4.5 詳細情報 #
『The GNU C Library Reference Manual』の「Locales and Internationalization」の章。パッケージ glibc-info。
『UTF-8 and Unicode FAQ for Unix/Linux』、Markus Kuhn著。Webページhttps://www.cl.cam.ac.uk/~mgk25/unicode.html (現在のアドレス)を参照してください。