ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Solaris のシステム管理 (上級編) Oracle Solaris 10 8/11 Information Library (日本語) |
3. サービスアクセス機能によるシリアルポートの管理 (手順)
18. ソフトウェアで発生するさまざまな問題の解決 (手順)
コアファイルは、プロセスまたはアプリケーションが異常終了した場合に生成されます。コアファイルは coreadm コマンドで管理します。
たとえば、coreadm コマンドを使用して、プロセスコアファイルをすべて同じシステムディレクトリに置くようにシステムを構成できます。プロセスやデーモンが異常終了した場合に、特定のディレクトリにあるコアファイルを調べればよいため、問題の追跡が容易になります。
次の 2 つの構成可能な新しいコアファイルのパスは、個別に有効または無効にすることができます。
プロセス別コアファイルのパスにはデフォルトで core が使用されます。このパスはデフォルトで有効になっています。プロセス別コアファイルのパスが有効になっていると、プロセスが異常終了したときにコアファイルが生成されます。プロセス別のパスは、親プロセスから新しいプロセスに継承されます。
プロセス別コアファイルは生成されるとプロセスの所有者によって所有され、所有者には読み取り/書き込み権が与えられます。所有者だけがこのファイルを表示できます。
グローバルコアファイルのパスにはデフォルトで core が使用されます。このパスはデフォルトで無効になっています。このパスが有効になっていると、プロセス別コアファイルのパスと同じ内容のコアファイルがグローバルコアファイルのパスに追加で作成されます。
グローバルコアファイルは生成されるとスーパーユーザーによって所有され、スーパーユーザーだけに読み取り/書き込み権が与えられます。アクセス権のないユーザーはこのファイルを表示できません。
プロセスが異常終了すると、コアファイルがデフォルトで現在のディレクトリに作成されます。グローバルコアファイルのパスが有効になっていると、プロセスが終了するたびにコアファイルが 2 つ、1 つは現在の作業ディレクトリに、1 つはグローバルコアファイルのディレクトリにそれぞれ作成されます。
デフォルトでは、setuid プロセスは、グローバルの設定やプロセス別のパスを使ってコアファイルを生成することはありません。
グローバルコアファイルディレクトリが有効な場合、次の表に示す変数を使って コアファイルを相互に区別できます。
|
たとえば、グローバルコアファイルパスが次のように設定されている場合、
/var/core/core.%f.%p
PID 12345 の sendmail プロセスが異常終了すると、次の コアファイルが作成されます。
/var/core/core.sendmail.12345
コアファイル名パターンは、グローバル、ゾーン別、またはプロセス別に設定できます。さらに、システムリブート後も有効なプロセス別デフォルトを設定できます。
たとえば、次の coreadm コマンドでは、デフォルトのプロセス別コアファイルパターンを設定します。この設定は、デフォルトのコアファイルパターンを明示的に上書きしていないプロセスに対して適用されます。この設定はシステムリブート後も有効です。
# coreadm -i /var/core/core.%f.%p
次の coreadm コマンドでは、任意のプロセスに対しプロセス別コアファイル名パターンを設定します。
$ coreadm -p /var/core/core.%f.%p $$
$$ 記号には、現在実行中のシェルのプロセス ID を指定します。プロセス別コアファイル名パターンは、すべての子プロセスに継承されます。
グローバルまたはプロセス別のコアファイル名パターンを設定したら、これを coreadm -e コマンドで有効にする必要があります。詳細については次の手順を参照してください。
このコマンドをユーザーの $HOME/.profile または $HOME/.login ファイルに入れておけば、ユーザーのログインセッションで実行するすべてのプロセスに対しコアファイル名パターンを設定できます。
coreadm コマンドを使って setuid プログラムを有効または無効にすれば、次のパス設定を行うことによって、すべてのシステムプロセスに対して、または各プロセスに対してコアファイルを作成できます。
グローバル setuid オプションが有効になっていると、グローバルコアファイルパスに従って、システムのすべての setuid プログラムがコアファイルを作成します。
プロセス別 setuid オプションが有効になっていると、プロセス別コアファイルパスに従って、特定の setuid プロセスがコアファイルを作成します。
デフォルトでは、両方のフラグが無効になっています。セキュリティー上の理由により、グローバルコアファイルパスは、/ で始まるフルパス名であることが必要です。スーパーユーザーがプロセス別コアファイルを無効にすると、個別のユーザーがコアファイルを得ることはできなくなります。
setuid コアファイルはスーパーユーザーによって所有され、スーパーユーザーだけに読み取り/書き込み権が与えられます。通常ユーザーは、たとえ setuid コアファイルを生成したプロセスを所有していても、それらのファイルにアクセスできません。
詳細は、coreadm(1M) のマニュアルページを参照してください。
現在のコアダンプ構成を表示するには、オプションを指定しないで coreadm コマンドを実行します。
$ coreadm global core file pattern: global core file content: default init core file pattern: core init core file content: default global core dumps: disabled per-process core dumps: enabled global setid core dumps: disabled per-process setid core dumps: disabled global core dump logging: disabled
$ coreadm -p $HOME/corefiles/%f.%p $$
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# coreadm -g /var/corefiles/%f.%p
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# coreadm -e process
$ coreadm $$ 1180: /home/kryten/corefiles/%f.%p
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# coreadm -e global -g /var/core/core.%f.%p
# coreadm global core file pattern: /var/core/core.%f.%p global core file content: default init core file pattern: core init core file content: default global core dumps: enabled per-process core dumps: enabled global setid core dumps: disabled per-process setid core dumps: disabled global core dump logging: disabled