Go to main content
Oracle® Solaris 11.3 でのシステム管理のトラブルシューティング

印刷ビューの終了

更新: 2016 年 11 月
 
 

コアファイル仕様の管理

このセクションには、コアファイルの管理に関する次の情報が記載されています。

現在のコアダンプ構成の表示

現在のコアダンプ構成を表示するには、オプションを指定しないで 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 コマンドで、init プロセスによって開始されるすべてのプロセスのデフォルトのプロセス別コアファイルパターンを設定します。この設定は、デフォルトのコアファイルパターンを明示的に上書きしていないプロセスに対して適用されます。この設定はシステムリブート後も有効です。

# coreadm -i /var/core/core.%f.%p

次の coreadm コマンドでは、任意のプロセスに対しプロセス別コアファイル名パターンを設定します。

# coreadm -p /var/core/core.%f.%p $$

$$ 記号には、現在実行中のシェルのプロセス ID を指定します。プロセス別コアファイル名パターンは、すべての子プロセスに継承されます。

例:

$ coreadm -p $HOME/corefiles/%f.%p $$

または、root 役割になり、グローバルファイル名パターンを設定することもできます。

# coreadm -g /var/corefiles/%f.%p

グローバルまたはプロセス別のコアファイル名パターンを設定したら、これを coreadm -e コマンドで有効にする必要があります。

このコマンドをユーザーの初期設定ファイル (たとえば .profile) に入れておけば、ユーザーのログインセッションで実行するすべてのプロセスに対しコアファイル名パターンを設定できます。

ファイルパスの有効化

プロセス別またはグローバルコアファイルパスを有効にできます。

  • プロセス別コアファイルパスを有効にするには、root 役割になり、次のコマンドを発行します。

    # coreadm -e process

    構成を確認する場合は、現在のプロセスコアファイルパスを表示します。

    # coreadm $$
    1180:   /home/kryten/corefiles/%f.%p
  • グローバルコアファイルパスを有効にするには、root 役割になり、次のコマンドを発行します。

    # 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

setuid プログラムがコアファイルを作成できるようにする

    coreadm コマンドを使って setuid プログラムを有効または無効にすれば、適切なパスを設定することによって、すべてのシステムプロセスに対して、または各プロセスに対してコアファイルを作成できます。

  • グローバル setuid オプションが有効になっていると、グローバルコアファイルパスに従って、システムのすべての setuid プログラムがコアファイルを作成します。

  • プロセス別 setuid オプションが有効になっていると、プロセス別コアファイルパスに従って、特定の setuid プロセスがコアファイルを作成します。

デフォルトでは、両方のフラグが無効になっています。セキュリティー上の理由により、グローバルコアファイルパスは、/ で始まるフルパス名にする必要があります。root がプロセス別コアファイルを無効にすると、個別のユーザーがコアファイルを得ることはできなくなります。

setuid コアファイルは root によって所有され、root だけに読み取り/書き込み権が与えられます。通常ユーザーは、ユーザーが setuid コアファイルを生成したプロセスを所有していても、それらのファイルにアクセスできません。

詳細については、coreadm(1M) のマニュアルページを参照してください。

デフォルトのコアファイル設定に戻す

    root として、次のいずれかのコマンドを実行し、コアファイルパスを無効にして、コアファイル名パターンを削除します。

  • グローバルコアファイル設定の場合:

    # coreadm -d global -g ""

    注 -  "" は空白なしの空の文字列です。
  • プロセス別コアファイル設定の場合:

    # coreadm -d process -g ""

    –d オプションは、コアファイルパスを無効にします。–g オプションに空の文字列変数を付けると、コアファイル名パターンが削除されます。コアファイルパスおよびコアファイル名パターンは、元のデフォルト設定に戻ります。

非推奨のコアファイルパラメータの修正

/etc/system ファイル内で setuid コアファイルを許可する非推奨のパラメータがある場合、次のメッセージが表示されます。

 
NOTICE: 'set allow_setid_core = 1' in /etc/system is obsolete
NOTICE: Use the coreadm command instead of 'allow_setid_core'

この問題を修正するには、/etc/system ファイルから allow_setid_core=1 を削除します。次に coreadm コマンドを使って、 グローバル setuid コアファイルパスを有効にします。