個々のユーザーのコアダンプサイズを自動的に設定するには?

個々のユーザーのコアダンプサイズを自動的に設定するには?

私はOpenSUSEを実行しています。私は通常、対話型の非ログインシェルを使用してコンソールを開き、しばしばログイン後にbash。を使用してコンパイルするコードをtcsh書いていますが、実行可能ファイルが失敗したときにコアダンプファイルを作成したいと思います。Cgcc

無制限のコアダンプサイズを手動で選択できることを知っていますが、入力したくありません。

limits coredumpsize unlimited

tcshまたは

ulimit -c unlimited

bashユーザーとしてログインするたびに、デフォルトのシェルにあります。

bashユーザーおよび/またはでログインするときにコアダンプサイズを自動的に設定する方法はありますかtcsh

答え1

いくつかの研究の終わりにこの問題を解決した可能性があります。 UNIXシステムにログインすると、システム上homeのファイルで利用可能なディレクトリの中から選択したシェルに基づくディレクトリに次のようにリダイレクトされました。\etc\passwd

alandella:x:1000:100:alandella:/home/alandella:/bin/bash

非ログインインタラクティブbashシェルについて説明します。次のようにシェルをbash実行すると、tcshログイン/ログアウト中に次のファイルが読み込まれます。

~/.login  -> Executes cmds at login
~/.tcshrc ->               same as ~./bashrc in bash and ~./cshrc in csh
~/.logout ->               at logout

~/.tcshrcしたがって、ファイルに次の行を追加するだけです~/.bashrc

~/.bashrc -> ulimit -Sc X
~/.tcshrc -> limit coredumpsize X

X値(kB)またははどこにありますかunlimited?トリックを実行する必要があります。

時にはファイルを編集するように求められます~/.profile。私のbashシェルがログイン時にそれを得たにもかかわらず、私はそれを編集しませんでした。なぜ違いはないのですか?私は常に非ログインシェルを使用しているので、konsoleをダブルクリックして端末を開きました。この~/.profileファイルは起動時にログインシェルでのみ選択されます(sh私は通常は使用しません)。bash次のファイルを順番に表示します。

.bash_profile -> .bash_login -> .profile

私の場合、最初の2つのファイルは存在せず、ログインシェルを使用するとbashソースファイルは存在しません。.profile

メモ。これはrootとして実行する必要があります。

  1. このファイルは、/etc/security/limits.confユーザーとルートに適切なハード/ソフト制限を設定します。コアダンプサイズが2000kBにハード制限されている場合、それを~/.bashrc3000kBに変更しても、コアダンプサイズ制限は2000kBのままです。探す limits.conf

  2. 以下のファイルには、設定を許可する/etc/pam.dこの行が含まれています。session required pam_limits.so/etc/security/limits.conf

  3. このファイルには、生成されたコアファイルの書式設定が/etc/sysctl.conf含まれていますkernel.core_pattern = core.%e.%p。ここで、%eは実行可能ファイル名、%pはpidです。

関連情報