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 番目の形式を実行できます。この形式では、オペレーティングシステムがプロセスごとのコアファイルを生成するときに使用する、ファイル名のパターンとコアファイルのコンテンツを指定します。
コアファイル名のパターンは、% から始まる文字で指定される組み込み変数を含んだ、通常のファイルシステムのパス名です。この変数は、オペレーティングシステムがコアファイルを生成するときに有効な値から展開されます。使用可能な組み込み変数は次のとおりです。
実行ファイルのディレクトリ名。最大文字数は MAXPATHLEN
実行ファイルの名前。最大文字数は MAXNAMELEN
実効グループ ID
内部形式でのプロセス認可上限 (atohexlabel "($plabel)")
マシン名 (uname –m)
システムノード名 (uname –n)
プロセス ID
time(2) の 10 進数の値
実効ユーザー ID
プロセスが実行されているゾーン名 (zonename)
リテラル %
たとえば、コマンドが foo でプロセス ID が 1234 の場合、コアファイル名のパターン /var/cores/core.%f.%p は /var/cores/core.foo.1234 になります。
コアファイルコンテンツの記述は、プロセスのバイナリイメージを識別する一連のトークンを使用して指定されます。
メインスレッドスタックではないスレッドスタックを含む、匿名プライベートマッピング
ロードされたオブジェクトファイルの CTF タイプ情報セクション
書き込み可能プライベートファイルマッピング
DISM マッピング
プロセスヒープ
ISM マッピング
OSM マッピング
コアダンププルーニングリクエスト。memcntl (MC_CORE_PRUNE_IN) および memcntl (MC_CORE_PRUNE_OUT) リクエストで指定
読み取り専用プライベートファイルマッピング
匿名共有マッピング
ファイルによってバックアップされる共有マッピング
System V 共有メモリー
プロセススタック
ロードされたオブジェクトファイルのシンボルテーブルセクション
読み取り可能および実行可能なプライベートファイルマッピング
また、トークン 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 で使用されます。
setuid か setgid であるプロセス、またはこのプロセスの最後の exec(2) 以降に setuid か setgid だったことのあるプロセスには、コアのダンプに関連するセキュリティーの問題が存在します。同様に、最初にスーパーユーザー特権を持っていて、setuid(2) によってそれらの特権を失ったプロセスにも、コアのダンプに関連するセキュリティーの問題が存在します。どちらのタイプのプロセスにも、そのアドレス空間の中に、現在の非特権プロセス所有者がアクセスできるべきではない機密情報が含まれている可能性があります。setid コアファイルが有効な場合、それらはモード 600 で作成され、スーパーユーザーによって所有されます。例 5 の手順を使用して、ラベル付きコアファイルが指定されている場合、このようなコアファイルは、ADMIN_HIGH ラベルで維持されます。
サポートしているオプションは、次のとおりです。
指定したコアファイルオプションを使用不可にします。指定可能なオプションについては、–e option を参照してください。
指定したコアファイルオプションを使用可能にします。option には次のいずれかを指定します。
大域コアパターンを使用するコアダンプを許可します。
大域コアパターンを使用する set-id コアダンプを許可します。
カーネルゾーンのコアパターンを使用するカーネルゾーンのコアダンプを許可します。
大域コアファイルの生成が試行されるときに syslog(3C) メッセージを生成します。
プロセスごとのコアパターンを使用するコアダンプを許可します。
デフォルトのコアコンテンツおよびパターンを使用した診断コアダンプを許可します。
診断コアデータの受信後に FMA で警告イベントが生成されるかどうかを指示します。
プロセスごとのコアパターンを使用する set-id コアダンプを許可します。
大域コアファイル名のパターンを pattern に設定します。The pattern represents a file system location and should start with a /.It can contain any of the special % variables that are described in the DESCRIPTION.
If the pattern is default or a blank string (eg. -g ""), the global core file pattern is returned to the system default.
The system default is /var/cores/core.%z.%f.%u.%p
「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。
大域コアファイルコンテンツを content に設定します。コンテンツは、「機能説明」で説明されているトークンを使用して指定する必要があります。
「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。
デフォルトのプロセスごとのコアファイル名を pattern に設定します。プロセスごとのパターンがまだデフォルトに設定されているプロセスは、これによってプロセスごとのパターンが変更されます。プロセスごとのパターンが設定されているプロセス、またはプロセスごとのパターンが設定されているプロセスの子孫のプロセス (–p オプションを使用) は、影響を受けません。このデフォルトは、リブート後も持続します。
「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。
デフォルトのプロセスごとのコアファイルコンテンツを content に設定します。プロセスごとのコンテンツがまだデフォルトに設定されているプロセスは、これによってプロセスごとのコンテンツが変更されます。プロセスごとのコンテンツが設定されているプロセス、またはプロセスごとのコンテンツが設定されているプロセスの子孫のプロセス (–P オプションを使用) は、影響を受けません。このデフォルトは、リブート後も持続します。
「Maintenance and Repair」RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。
指定されたプロセス ID ごとに、プロセス単位コアファイル名パターンを pattern に設定します。このパターンには「機能説明」で説明した % 特殊変数を含めることができ、その先頭は / である必要はありません。パターンが / から始まっていない場合は、プロセスがコアファイルを生成したときのカレントディレクトリから相対的に判断されます。
非特権ユーザーは、そのユーザーが所有するプロセスにのみ –p オプションを適用できます。proc_owner 特権を持つユーザーは、任意のプロセスにこのオプションを適用できます。プロセスごとのコアファイル名のパターンは、影響を受けるプロセスの将来の子プロセスに継承されます。fork(2) のマニュアルページを参照してください。
プロセス ID が指定されていない場合、–p オプションは、親プロセス (通常、coreadm を実行したシェル) についてプロセスごとのコアファイル名のパターンを pattern に設定します。
指定した各プロセス ID のプロセスごとのコアファイルコンテンツを content に設定します。コンテンツは、「機能説明」で説明されているトークンを使用して指定する必要があります。
非特権ユーザーは、そのユーザーが所有するプロセスにのみ –p オプションを適用できます。proc_owner 特権を持つユーザーは、任意のプロセスにこのオプションを適用できます。プロセスごとのコアファイル名のパターンは、影響を受けるプロセスの将来の子プロセスに継承されます。fork(2) のマニュアルページを参照してください。
プロセス ID が指定されていない場合、–P オプションは、親プロセス (通常、coreadm を実行したシェル) についてプロセスごとのファイルコンテンツを content に設定します。
診断コア保持ポリシーを設定します。次のオプションを指定できます。
デフォルトのオプション。診断コアファイルは、サマリー json ファイルが生成され、レポートが記録されると削除されます。
すべての診断コアファイルが保持されます。
数値を指定すると、特定のバイナリに対して、最大 n 個の診断コアファイルが保持されます。
数値を指定すると、診断コアファイルは n 日間保持されます。
カーネルゾーンのコアファイル名パターンを pattern に設定します。The pattern represents a files system location and should start with a /.It can contain any of the special % variables that are described in the DESCRIPTION section.
If the pattern is default or a blank string (eg. -k ""), the kernel zone core file pattern is returned to the system default.
The system default is /var/cores/%z/kzcore.%t
Maintenance and Repair RBAC プロファイルに属しているユーザーおよび役割だけが、このオプションを使用できます。
次のオペランドがサポートされています。
プロセス ID
config_params プロパティーグループでは、次のプロパティーがサポートされています。ユーザーは coreadm コマンドを使用して、これらのプロパティーを設定または更新したり、これらのプロパティーを持つ SMF プロファイルを作成して値を設定または更新したりできます。
このプロパティーが true の場合、大域コアパターンを使用するコアダンプを許可します。
大域コアファイルコンテンツを global_content プロパティーに設定します。コンテンツは、「機能説明」セクションで説明されているトークンを使用して指定する必要があります。
大域コアファイル名のパターンを global_pattern プロパティーに設定します。パターンは / から始めるべきであり、「機能説明」セクションで説明されている特殊な % 変数のいずれも含めることができます。
このプロパティーが true の場合、大域コアパターンを使用する set-id コアダンプを許可します。
このプロパティーが true の場合、大域コアファイルの生成が試みられたときに syslog メッセージを生成します。syslog メッセージの詳細は、syslog(3C) のマニュアルページを参照してください。
このプロパティーが true の場合、プロセス別コアパターンを使用するコアダンプを許可します。
このプロパティーが true の場合、プロセス別コアパターンを使用する set-id コアダンプを許可します。
デフォルトのプロセス別コアファイルコンテンツを init_content プロパティーに設定します。プロセスごとのコンテンツがまだデフォルトに設定されているプロセスは、これによってプロセスごとのコンテンツが変更されます。
デフォルトのプロセス別コアファイル名を init_pattern プロパティーに設定します。プロセスごとのパターンがまだデフォルトに設定されているプロセスは、これによってプロセスごとのパターンが変更されます。
このプロパティーが true の場合、カーネルゾーンのコアパターンを使用するカーネルゾーンのコアダンプを許可します。
カーネルゾーンのコアファイル名パターンを kzone_pattern プロパティーに設定します。パターンは / から始める必要があり、「機能説明」のセクションで説明されている特殊な % 変数のいずれも含めることができます。
このプロパティーが true の場合、デフォルトのコアコンテンツおよびパターンを使用した診断コアダンプを許可します。
診断コア保持ポリシーを retention_policy プロパティーに設定します。このポリシーには summary、all、<n>、<n>d のいずれかを指定できます。
このプロパティーが true の場合、診断コアデータの受信後に FMA で警告イベントが生成されます。
ユーザーの $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
大域コアファイルの格納用に提供されているディレクトリです。
診断コアファイルストレージ用に提供されているディレクトリ。
次の終了ステータスが返されます。
正常終了。
システムコアファイル構成の取得または変更中に致命的エラーが発生しました。
無効なコマンド行オプションが指定されました。
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|
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 の両方の承認が付与されているユーザー、役割、またはプロファイルも使用できます。