Go to main content

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

印刷ビューの終了

更新: 2018年8月8日
 
 

coreadm(8)

名前

coreadm - コアファイルの管理

形式

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

説明

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

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

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

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

%d

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

%f

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

%g

実効グループ ID

%l

内部形式でのプロセス認可上限 (atohexlabel "($plabel)")

%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 マッピング

osm

OSM マッピング

prune

コアダンププルーニングリクエスト。memcntl (MC_CORE_PRUNE_IN) および memcntl (MC_CORE_PRUNE_OUT) リクエストで指定

rodata

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

shanon

匿名共有マッピング

shfile

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

shm

System V 共有メモリー

stack

プロセススタック

symtab

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

text

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

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

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

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

$ coreadm
    global core file pattern: /var/cores/core.%f.%p
kernel zone core file pattern: /var/cores/%z/kzcore.%t
    global core file content: all
      init core file pattern: core
      init core file content: default
           global core dumps: enabled
      kernel zone core dumps: enabled
      per-process core dumps: enabled
     global setid core dumps: enabled
per-process setid core dumps: disabled
    global core dump logging: disabled
            retention policy: summary
       diagnostic core dumps: enabled

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


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

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

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

生成時に、大域コアファイルはモード 600 で作成され、スーパーユーザーによって所有されます。非特権ユーザーはそのようなファイルを調べることができません。例 4 の手順を使用して、ラベル付きコアファイルが指定されている場合、このようなコアファイルは、ADMIN_HIGH ラベルで維持されます。

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

プロセスは memcntl を使用して、そのアドレス空間の領域を、コアダンプが生成されるときに含めるか除外するように要求できます。prune コンテンツトークンは、上記のように、これらのリクエストがプロセスごとのコアファイルに対して受け付けられるか、グローバルコアファイルに対して受け付けられるかを制御します。詳細は、memcntl(2) のマニュアルページを参照してください。

診断コアファイルは、異常終了したプロセスからダンプされます。この種のコアファイルは、さらなる調査に役立つデータを収集するためにのみ、coremond で使用されます。

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

オプション

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

–d option...

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

–e option...

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

大域

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

global-setid

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

kzone

カーネルゾーンのコアパターンを使用するカーネルゾーンのコアダンプを許可します。

log

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

process

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

diagnostic

デフォルトのコアコンテンツおよびパターンを使用した診断コアダンプを許可します。

alert

診断コアデータの受信後に FMA で警告イベントが生成されるかどうかを指示します。

proc-setid

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

–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 に設定します。

–r policy

診断コア保持ポリシーを設定します。次のオプションを指定できます。

summary

デフォルトのオプション。診断コアファイルは、サマリー json ファイルが生成され、レポートが記録されると削除されます。

all

すべての診断コアファイルが保持されます。

<n>

数値を指定すると、特定のバイナリに対して、最大 n 個の診断コアファイルが保持されます。

<n>d

数値を指定すると、診断コアファイルは n 日間保持されます。

–k pattern

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

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


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

オペランド

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

pid

プロセス ID

SMF プロパティー

config_params プロパティーグループでは、次のプロパティーがサポートされています。ユーザーは coreadm コマンドを使用して、これらのプロパティーを設定または更新したり、これらのプロパティーを持つ SMF プロファイルを作成して値を設定または更新したりできます。

global_enabled (boolean)

このプロパティーが true の場合、大域コアパターンを使用するコアダンプを許可します。

global_content (string)

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

global_pattern (string)

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

global_setid_enabled (boolean)

このプロパティーが true の場合、大域コアパターンを使用する set-id コアダンプを許可します。

global_log_enabled (boolean)

このプロパティーが true の場合、大域コアファイルの生成が試みられたときに syslog メッセージを生成します。syslog メッセージの詳細は、syslog(3C) のマニュアルページを参照してください。

process_enabled (boolean)

このプロパティーが true の場合、プロセス別コアパターンを使用するコアダンプを許可します。

process_setid_enabled (boolean)

このプロパティーが true の場合、プロセス別コアパターンを使用する set-id コアダンプを許可します。

init_content (string)

デフォルトのプロセス別コアファイルコンテンツを init_content プロパティーに設定します。プロセスごとのコンテンツがまだデフォルトに設定されているプロセスは、これによってプロセスごとのコンテンツが変更されます。

init_pattern (string)

デフォルトのプロセス別コアファイル名を init_pattern プロパティーに設定します。プロセスごとのパターンがまだデフォルトに設定されているプロセスは、これによってプロセスごとのパターンが変更されます。

kzone_enabled (boolean)

このプロパティーが true の場合、カーネルゾーンのコアパターンを使用するカーネルゾーンのコアダンプを許可します。

kzone_pattern (string)

カーネルゾーンのコアファイル名パターンを kzone_pattern プロパティーに設定します。パターンは / から始める必要があり、「機能説明」のセクションで説明されている特殊な % 変数のいずれも含めることができます。

diagnostic_enabled (boolean)

このプロパティーが true の場合、デフォルトのコアコンテンツおよびパターンを使用した診断コアダンプを許可します。

retention_policy (string)

診断コア保持ポリシーを retention_policy プロパティーに設定します。このポリシーには summaryall、<n>、<n>d のいずれかを指定できます。

diag_alert_enabled (boolean)

このプロパティーが true の場合、診断コアデータの受信後に FMA で警告イベントが生成されます。

使用例 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

使用例 4 グローバルコアファイルのラベル付け

次のコマンドは、ラベル付きコアファイルを生成するようにシステムを設定します。グローバルコアファイルへのアクセスは、root に制限されます。さらに保護を高めるために、これらのファイルに ADMIN_HIGH のラベルを付けられます。作成され、ADMIN_HIGH のラベルが付けられたマルチレベルのディレクトリがパターンで指定されます。

example# zfs create -o multilevel=on rpool/VARSHARE/cores2
example# setlabel ADMIN_HIGH /var/share/cores2
example# coreadm -g /var/share/cores2/%f.%p
使用例 5 ゾーン別ディレクトリのカーネルゾーンコアダンプの有効化

次のコマンドは、カーネルゾーンごとに別々のディレクトリに、カーネルゾーン別のコアイメージファイルを生成するようにシステムを設定します。カーネルゾーンのコアファイルへのアクセスは、root に制限されます。

example# mkdir /var/cores/zonename1
example# mkdir /var/cores/zonename2
example#     .
example#     .
example#     .
example# mkdir /var/cores/zonenameN
example# coreadm -k /var/cores/%z/%f.%t -e kzone
使用例 6 プロセス別ラベル付きコアファイルの維持

次のコマンドは、ダンプされるプロセスの認可上限でラベル付けされたコアファイルを生成するように、ユーザーセッションを設定します。ここでは、ユーザーのホームディレクトリがマルチレベルファイルシステムであると想定されています。個々のサブディレクトリは、ユーザーが利用できる認可上限ごとに作成されます。

example$ mkdir $HOME/cores
example$ for l in $(labelcfg list|tr \" -|tr ' ' -); do
> lbl=$(atohexlabel "$echo $l|tr - ' ')")
> mkdir $HOME/cores/$lbl
> setlabel $lbl $HOME/cores/$lbl
> done
example$ mkdir $HOME/cores/ADMIN_LOW
example$ coreadm -p $HOME/cores/%l/%f.%p

ユーザーから ADMIN_HIGH がクリアされた場合、次の追加ステップが適切です。

example$ mkdir $HOME/cores/ADMIN_HIGH
example$ setlabel ADMIN_HIGH $HOME/cores/ADMIN_HIGH
使用例 7 診断コアファイル保持ポリシーの設定

次のコマンドは、システムで 30 日間診断コアファイルを保持するように設定します。

example# coreadm -r all
example# coreadm -r 30d

ファイル

/var/cores

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

/var/diag

診断コアファイルストレージ用に提供されているディレクトリ。

終了ステータス

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

0

正常終了。

1

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

2

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

属性

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

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

関連項目

gcore(1)pfexec(1)svcs(1)exec(2)fork(2)setuid(2)time(2)memcntl(2)syslog(3C)core(5)prof_attr(5)user_attr(5)attributes(7)smf(7)init(8)svcadm(8)

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

カーネルゾーンのコアダンプは、実行中のカーネルゾーンのマシンイメージ全体をキャプチャーします。これは zoneadm savecore の実行によってキャプチャーされるダンプと同じものです。カーネルゾーンのコアダンプは、カーネルゾーンのコアパターンが設定されている場合にのみ使用できます。カーネルゾーンのコアパターンの指定において、実行されたディレクトリ名 (%d) 指定子とプロセスラベル (%l) 指定子は意味を持たないため無視されます。また、実行されたファイル名 (%f) は kzcore という文字列になります。

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

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

svc:/system/coreadm:default

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

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