개별 사용자의 코어 덤프 크기를 자동으로 설정하는 방법은 무엇입니까?

개별 사용자의 코어 덤프 크기를 자동으로 설정하는 방법은 무엇입니까?

저는 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셸(konsole)에 대해 설명합니다. 다음과 같이 셸을 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

제 경우 처음 두 파일이 존재하지 않아서 로그인 쉘을 사용하면 bash소스 파일이 존재하지 않습니다..profile

노트.이 작업은 루트로 수행되어야 하며 이 트릭이 작동하려면 다음 사항이 충족되어야 합니다.

  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입니다.

관련 정보