概要
この章では、まず、さまざまなソフトウェアパッケージ、バーチャルコンソール、およびキーボードレイアウトについて説明します。bash、cron、およびlogrotateといったソフトウェアコンポーネントについても説明します。これらは、前回のリリースサイクルで変更または強化されたからです。これらのコンポーネントはそれほど重要ではないと思われるかもしれませんが、システムと密接に結びついているものなので、デフォルトの動作を変更したい場合もあることでしょう。この章の最後では、言語および国固有設定(I18NおよびL10N)について説明します。
bash、cron、logrotate、locate、ulimit、freeといったプログラムは、システム管理者および多くのユーザにとって非常に重要です。manのページとinfoのページは、コマンドについての2つの役立つ情報源ですが、その両方が常に利用できるとは限りません。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/cron/tabsにあります。/etc/crontabはシステム全体のcronテーブルとして機能します。ユーザ名を入力して、タイムテーブルの後、コマンドの前に直接コマンドを実行するようにします。では、例11.1「/etc/crontab内のエントリ」rootが入力されています。/etc/cron.dにあるパッケージ固有のテーブルも同じ形式です。cronのマニュアルページを参照してください(man cron使用)。
/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のエントリを使用して、定期的にタイムスタンプファイルを削除します(例11.2「/etc/crontab:タイムスタンプファイルの削除」を参照してください。そこでは、hourlyという名前の付いているファイルが毎時59分に、dailyという名前の付いているファイルが毎日午前2時14分に削除されるようになっています)。
例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
または、/etc/sysconfig/cronのDAILY_TIMEをcron.dailyを起動する時刻に設定します。MAX_NOT_RUNの設定では、ユーザが長期間、指定したDAILY_TIMEにコンピュータを起動しなくても、毎日のタスクの実行がトリガされるようにします。MAX_NOT_RUNの最大値は14日です。
日常のシステムメンテナンスジョブは、わかりやすいようにさまざまなスクリプトに分散されています。これらはパッケージaaa_base. /etc/cron.dailyに含まれています。このパッケージには、たとえば、コンポーネントsuse.de-backup-rpmdb、suse.de-clean-tmp、またはsuse.de-cron-localが含まれています。
カーネルそのものと一緒になって、定期的にシステムスのステータスおよび特定イベントをログファイルに記録するシステムサービス(デーモン)が数多くあります。これにより、管理者は、一定間隔でシステムのステータスを定期的にチェックし、エラーまたは障害のある機能を認識し、そのトラブルシューティングをピンポイントで実行できます。通常、これらのログファイルは、FHSで指定されるように/var/log内に格納され、毎日記録が追加されるためにサイズが増大します。logrotateパッケージを使用して、これらのファイルが増大するのを制御できます。
/etc/logrotate.confファイルを使用して、logrotateを設定します。特に、includeには、最初に読み込む追加ファイルを設定します。ログファイルを生成しないプログラムは、個別の環境設定ファイルを/etc/logrotate.dにインストールします。たとえば、そのようなファイルは、apache2 (/etc/logrotate.d/apache2)およびsyslogd (/etc/logrotate.d/syslog)パッケージに含まれています。
例11.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により毎日呼び出されます。
ファイルをすばやく検索するためのコマンドlocateは、標準のインストール済みソフトウェアには含まれていません。必要であれば、パッケージfind-locateをインストールしてください。updatedbプロセスは、毎晩、またはシステムをブートしてから約15分で自動的に起動します。
ulimit(user limits)コマンドを使用すると、システムリソースの使用量に制限を設定して、それを表示できます。ulimitはアプリケーションが使用できるメモリの制限に特に役立ちます。これを使用して、アプリケーションがシステムリソースを過剰に使用して速度が低下したり、オペレーティングシステムをハングさせたりすることを防止できます。
ulimitコマンドには、さまざまなオプションがあります。メモリの使用量を制限するには、表11.1「ulimit:ユーザのためのリソースの設定」に示すオプションを使用します。
表11.1 ulimit:ユーザのためのリソースの設定
|
|
最大常駐セットサイズ |
|
|
シェルが使用できる仮想メモリの最大量 |
|
|
最大スタックサイズ |
|
|
作成されるコアファイルの最大サイズ |
|
|
すべての現在の制限値の報告 |
システム全体のエントリは、/etc/profileで設定できます。コアファイルの作成を有効にします(プログラマがデバッグを行うために必要)。通常のユーザは、/etc/profileファイルでシステム管理者が指定した値を大きくすることはできませんが、~/.bashrcに特別なエントリを作成することは可能です。
例11.4 ulimit:~/.bashrc中の設定
# Limits maximum resident set size (physical memory): ulimit -m 98304 # Limits of virtual memory: ulimit -v 98304
メモリ割り当ては、KB単位で指定する必要があります。詳細については、man bashコマンドでmanページを参照してください。
![]() | |
すべてのシェルがulimitディレクティブをサポートするわけではありません。ユーザが制約を包括的に設定する必要がある場合、PAM(たとえば、 | |
現在使用されているRAMの容量を確認することが目的ならば、freeコマンドは、少々誤解を招くかもしれません。そのような情報は、/proc/meminfoで表示できます。今日では、Linuxのような最新のオペレーティングシステムにアクセスする場合、ユーザはメモリについてそれほど深刻に考える必要はありません。利用可能な RAM という概念は、統一的なメモリ管理が生まれる以前の遺物です。空きメモリは悪いメモリというスローガンは、Linux にぴったりです。結果として、Linuxでは、空きメモリや未使用メモリを実質的に発生させず、キャッシュの量を調整するよう努力が重ねられてきました。
基本的に、カーネルは、アプリケーションやユーザデータについての直接的な知識はありません。その代わりにカーネルは、ページキャッシュのアプリケーションとユーザデータを管理します。メモリが不足すると、その一部はスワップパーティションかファイルに書き込まれ、そこから mmapコマンドで読み込まれます(man mmap コマンドでmanページを参照)。
カーネルには、たとえば、ネットワークアクセスに使用されたキャッシュが格納されているslabキャッシュなどの別のキャッシュがあります。これが/proc/meminfoのカウンタ間の違いになります。全部ではありませんが、これらのキャッシュのほとんどは、/proc/slabinfoでアクセスできます。
一部のGNUアプリケーション(tarなど)では、manページが提供されなくなりました。manページが用意されていたコマンドについては、--helpオプションを使用して簡単な概要を表示するか、詳細な手順を説明するinfoページを使用します。infoは、GNUのハイパーテキストシステムです。このシステムについての説明は、「info info」と入力してください。Info ページは、「emacs -f info」コマンドを入力してEmacsを起動するか、コンソールで直接「info」と入力します。あるいは、tkinfo、xinfo、またはヘルプシステムを使用して、infoページを表示できます。
man man_pageを使用して、通常はマニュアルページを表示してすぐに読めます。同じ名前のマニュアルページが別のセクションにある場合、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ファイルを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でシステム全体の設定を指定できます。
これらのファイルに関する詳しい説明は、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(クライアント/サーバ操作)など、さまざまなアドオンパッケージをインストールできます。