bashcronlogrotatelocateulimitfreeといったプログラムは、システム管理者および多くのユーザにとって非常に重要です。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テーブルとして機能します。ユーザ名を入力して、タイムテーブルの後、コマンドの前に直接コマンドを実行するようにします。では、例 9-1rootが入力されています。/etc/cron.dにあるパッケージ固有のテーブルも同じ形式です。cronのマニュアルページを参照してください(man cron使用)。
例 9-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のエントリで、定期的に、使用するタイムスタンプファイルを削除します(「例 9-2」を参照してください。そこでは、hourlyという名前の付いているファイルが毎時59分に、dailyという名前の付いているファイルが毎日午前 2::14に削除されるようになっています)。
例 9-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)パッケージに含まれています。
例 9-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により毎日呼び出されます。
重要: createオプションは、管理者によって/etc/permissions*内に作成されるすべての設定を読み取ります。個人的な変更によっていずれの競合も発生することがないようにしてください。
ファイルをすばやく検索するためのlocateコマンドは、標準のインストール済みソフトウェアには含まれていません。必要であれば、パッケージfind-locateをインストールしてください。updatedbプロセスは、毎晩、またはシステムをブートしてから約15分で自動的に起動します。
ulimit (使用制限)コマンドを使用すると、システムリソースの使用量に制限を設けたり、これらの制限を表示したりすることができます。ulimitは、アプリケーションでの使用可能メモリを制限する場合に特に便利です。1つのアプリケーションが大量のメモリを独占するとシステムが停止してしまいますが、これを使用することで、それが避けられます。
ulimitコマンドには、さまざまなオプションがあります。メモリの使用量を制限するには、表 9-1に示すオプションを使用します。
表 9-1 ulimit:ユーザのためのリソースの設定
|
-m |
最大常駐セットサイズ |
|
-v |
シェルが使用できる仮想メモリの最大量 |
|
-s |
最大スタックサイズ |
|
-c |
作成されるコアファイルの最大サイズ |
|
-a |
すべての現在の制限値の報告 |
システム全体のエントリは、/etc/profileで設定できます。コアファイルの作成を有効にします。 これはプログラマがデバッグを行うために必要です。通常のユーザは、/etc/profileファイルでシステム管理者が指定した値を大きくすることはできませんが、~/.bashrcに特別なエントリを作成することは可能です。
例 9-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(たとえば、pam_limits)を使用すれば、包括的な調整が可能になります。
現在使用されているRAMの容量を確認することが目的ならば、freeコマンドは、少々誤解を招くかもしれません。そのような情報は、/proc/meminfoで表示できます。今日では、Linuxのような最新のオペレーティングシXテムにアクセスする場合、ユーザはメモリについてそれほど深刻に考える必要はありません。利用可能な 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 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でシステム全体の設定を指定できます。
これらのファイルに関する詳しい説明は、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(クライアント/サーバ操作用)など、さまざまなアドオンパッケージをインストールできます。