マニュアルページセク ション 1M: システム管理コマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

coreadm(1M)

名前

coreadm - コアファイルの管理

形式

coreadm [-g pattern] [-G content] [-i pattern] [-I content] 
     [-d option]... [-e option]...
coreadm [-p pattern] [-P content] [pid]...

説明

coreadm コマンドを使用して、異常終了するプロセスにより生成されるコアファイルの名前と場所を指定できます。core(4) を参照してください。

「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、「形式」の最初の形式を実行できます。この形式では、大域的なコアファイル名のパターンおよび init(1M) プロセスのコアファイル名のパターンを含む、システム全体のコアファイルオプションを構成します。すべての設定が恒久的に保存され、ブート時に適用されます。

非特権ユーザーは、「形式」の 2 番目の形式を実行できます。この形式では、オペレーティングシステムがプロセスごとのコアファイルを生成するときに使用する、ファイル名のパターンとコアファイルのコンテンツを指定します。

コアファイル名のパターンは、% から始まる文字で指定される組み込み変数を含んだ、通常のファイルシステムのパス名です。この変数は、オペレーティングシステムがコアファイルを生成するときに有効な値から展開されます。使用可能な組み込み変数は次のとおりです。

%d

実行ファイルのディレクトリ名。最大文字数は MAXPATHLEN

%f

実行ファイルの名前。最大文字数は MAXCOMLEN

%g

実効グループ ID

%m

マシン名 (uname –m)

%n

システムノード名 (uname –n)

%p

プロセス ID

%t

time(2) の 10 進数の値

%u

実効ユーザー ID

%z

プロセスが実行されているゾーン名 (zonename)

%%

リテラル %

たとえば、コマンドが foo でプロセス ID が 1234 の場合、コアファイル名のパターン /var/cores/core.%f.%p/var/cores/core.foo.1234 になります。

コアファイルコンテンツの記述は、プロセスのバイナリイメージを識別する一連のトークンを使用して指定されます。

anon

メインスレッドスタックではないスレッドスタックを含む、匿名プライベートマッピング

ctf

ロードされたオブジェクトファイルの CTF タイプ情報セクション

data

書き込み可能プライベートファイルマッピング

dism

DISM マッピング

heap

プロセスヒープ

ism

ISM マッピング

rodata

読み取り専用プライベートファイルマッピング

shanon

匿名共有マッピング

shfile

ファイルによってバックアップされる共有マッピング

shm

System V 共有メモリー

stack

プロセススタック

symtab

ロードされたオブジェクトファイルのシンボルテーブルセクション

text

読み取り可能および実行可能なプライベートファイルマッピング

また、トークン all を使用すると、コアファイルにプロセスのバイナリイメージのすべての部分を含めるよう指定できます。トークン none を使用すると、マッピングをまったく含めないよう指定できます。default トークンを使用すると、システムのデフォルトコンテンツ (stack+heap+shm+ism+dism+text+data+rodata+anon+shanon+ctf+symtab) を含めるよう指定できます。/proc ファイルシステムデータ構造は、マッピングコンテンツに関係なく、常にコアファイル内に存在します。

+ および - を使用して、トークンを連結できます。たとえば、コアファイルコンテンツ default-ism は、詳細共有メモリーマッピングを除くマッピングのデフォルトセットを使用してコアファイルを生成します。

引数なしの coreadm コマンドは、現在のシステム構成を報告します。たとえば、次のようになります。

$ coreadm
    global core file pattern: /var/cores/core.%f.%p
    global core file content: all
      init core file pattern: core
      init core file content: default
           global core dumps: enabled
      per-process core dumps: enabled
     global setid core dumps: enabled
per-process setid core dumps: disabled
    global core dump logging: disabled

プロセス ID のリストのみを指定した coreadm コマンドは、各プロセスにおけるプロセスごとのコアファイル名のパターンを報告します。たとえば、次のようになります。


$ coreadm 278 5678
  278:   core.%f.%p default
  5678:  /home/george/cores/%f.%p.%t all-ism

プロセスの所有者または proc_owner 特権を持つユーザーのみがこの方法でプロセスを調べることができます。

プロセスがコアをダンプしているとき、次のように最大で 3 つのコアファイルを生成できます。1 つはプロセスごとの場所、1 つはシステム全体の大域的な場所、さらに、プロセスが局所 (非大域) ゾーンで実行されていた場合は、1 つをそのプロセスが実行されていたゾーンの大域的な場所に生成できます。各コアファイルは、対応する場所に有効なオプションに従って生成されます。

生成時に、大域コアファイルはモード 600 で作成され、スーパーユーザーによって所有されます。非特権ユーザーはそのようなファイルを調べることができません。

通常のプロセスごとのコアファイルは、プロセスの資格に基づいてモード 600 で作成されます。プロセスの所有者はそのようなファイルを調べることができます。

setuidsetgid であるプロセス、またはこのプロセスの最後の exec(2) 以降に setuid か setgid だったことのあるプロセスには、コアのダンプに関連するセキュリティーの問題が存在します。同様に、最初にスーパーユーザー特権を持っていて、setuid(2) によってそれらの特権を失ったプロセスにも、コアのダンプに関連するセキュリティーの問題が存在します。どちらのタイプのプロセスにも、そのアドレス空間の中に、現在の非特権プロセス所有者がアクセスできるべきではない機密情報が含まれている可能性があります。setid コアファイルが有効な場合、それらはモード 600 で作成され、スーパーユーザーによって所有されます。

オプション

サポートしているオプションは、次のとおりです。

–d option...

指定したコアファイルオプションを使用不可にします。指定可能なオプションについては、–e option を参照してください。

複数の –e および –d オプションをコマンド行で指定できます。「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。

–e option...

指定したコアファイルオプションを使用可能にします。option には次のいずれかを指定します。

大域 (global)

大域コアパターンを使用するコアダンプを許可します。

global-setid

大域コアパターンを使用する set-id コアダンプを許可します。

log

大域コアファイルの生成が試行されるときに syslog(3C) メッセージを生成します。

process

プロセスごとのコアパターンを使用するコアダンプを許可します。

proc-setid

プロセスごとのコアパターンを使用する set-id コアダンプを許可します。

複数の –e および –d オプションをコマンド行で指定できます。「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。

–g pattern

大域コアファイル名のパターンを pattern に設定します。パターンは / から始める必要があり、「機能説明」で説明されている特殊な % 変数のいずれも含めることができます。

「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。

–G content

大域コアファイルコンテンツを content に設定します。コンテンツは、「機能説明」で説明されているトークンを使用して指定する必要があります。

「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。

–i pattern

デフォルトのプロセスごとのコアファイル名を pattern に設定します。プロセスごとのパターンがまだデフォルトに設定されているプロセスは、これによってプロセスごとのパターンが変更されます。プロセスごとのパターンが設定されているプロセス、またはプロセスごとのパターンが設定されているプロセスの子孫のプロセス (–p オプションを使用) は、影響を受けません。このデフォルトは、リブート後も持続します。

「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。

–I content

デフォルトのプロセスごとのコアファイルコンテンツを content に設定します。プロセスごとのコンテンツがまだデフォルトに設定されているプロセスは、これによってプロセスごとのコンテンツが変更されます。プロセスごとのコンテンツが設定されているプロセス、またはプロセスごとのコンテンツが設定されているプロセスの子孫のプロセス (–P オプションを使用) は、影響を受けません。このデフォルトは、リブート後も持続します。

「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。

–p pattern

指定されたプロセス ID ごとに、プロセス単位コアファイル名パターンを pattern に設定します。このパターンには「機能説明」で説明した % 特殊変数を含めることができ、その先頭は / である必要はありません。パターンが / から始まっていない場合は、プロセスがコアファイルを生成したときのカレントディレクトリから相対的に判断されます。

非特権ユーザーは、そのユーザーが所有するプロセスにのみ –p オプションを適用できます。proc_owner 特権を持つユーザーは、任意のプロセスにこのオプションを適用できます。プロセスごとのコアファイル名のパターンは、影響を受けるプロセスの将来の子プロセスに継承されます。fork(2) を参照してください。

プロセス ID が指定されていない場合、–p オプションは、親プロセス (通常、coreadm を実行したシェル) についてプロセスごとのコアファイル名のパターンを pattern に設定します。

–P content

指定した各プロセス ID のプロセスごとのコアファイルコンテンツを content に設定します。コンテンツは、「機能説明」で説明されているトークンを使用して指定する必要があります。

非特権ユーザーは、そのユーザーが所有するプロセスにのみ –p オプションを適用できます。proc_owner 特権を持つユーザーは、任意のプロセスにこのオプションを適用できます。プロセスごとのコアファイル名のパターンは、影響を受けるプロセスの将来の子プロセスに継承されます。fork(2) を参照してください。

プロセス ID が指定されていない場合、–P オプションは、親プロセス (通常、coreadm を実行したシェル) についてプロセスごとのファイルコンテンツを content に設定します。

オペランド

次のオペランドがサポートされています。

pid

プロセス ID

使用例 1 コアファイル名パターンの設定

ユーザーの $HOME/.profile または $HOME/.login から実行した場合、次のコマンドはログインセッション中に実行されるすべてのプロセスのコアファイル名のパターンを設定します。


example$  coreadm -p core.%f.%p

プロセス ID が省略されているため、現在実行されているシェルでプロセスごとのコアファイル名パターンが設定され、それがすべての子プロセスに継承されます。

使用例 2 サブディレクトリへのユーザーのファイルのダンプ

次のコマンドでは、ユーザーのすべてのコアダンプを、システムノード名によって判別される、ホームディレクトリの corefiles サブディレクトリにダンプします。このコマンドは、多くの異なるマシンを使用し、共有ホームディレクトリを持つユーザーに役立ちます。


example$  coreadm -p $HOME/corefiles/%n.%f.%p 1234

使用例 3 大域コアファイルリポジトリの選別

次のコマンドでは、実行可能ファイルが /usr/bin または /usr/sbin から実行された場合にのみ大域リポジトリにコアファイルを生成するようにシステムを設定します。


example# mkdir -p /var/cores/usr/bin
example# mkdir -p /var/cores/usr/sbin
example# coreadm -G all -g /var/cores/%d/%f.%p.%n

ファイル

/var/cores

大域コアファイルの格納用に提供されているディレクトリです。

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

1

システムコアファイル構成の取得または変更中に致命的エラーが発生しました。

2

無効なコマンド行オプションが指定されました。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os

関連項目

gcore(1), pfexec(1), svcs(1), init(1M), svcadm(1M), exec(2), fork(2), setuid(2), time(2), syslog(3C), core(4), prof_attr(4), user_attr(4), attributes(5), smf(5)

局所 (非大域) ゾーンでは、大域設定はそのゾーン内で実行中のプロセスに適用されます。また、大域ゾーンはすべてのゾーンで実行されるプロセスに適用されます。

大域設定とは、システムまたはゾーン全体に適用される設定のことで、必ずしも大域ゾーンで有効になる設定を意味するものではありません。

coreadm サービスはサービス管理機能 smf(5) により次のサービス識別子の下で管理されます。

svc:/system/coreadm:default

有効化、無効化、または再起動要求など、このサービスに関する管理操作は、svcadm(1M) を使用して実行できます。サービスステータスを照会するには、svcs(1) コマンドを使用します。

–g–G–i–I–e、および –d の各オプションは、solaris.smf.manage.coreadm および solaris.smf.value.coreadm の両方の承認が付与されているユーザー、役割、またはプロファイルも使用できます。