저는 OpenSUSE를 실행하고 있습니다. 나는 일반적으로 대화형 비로그인 셸을 사용하여 콘솔을 열며, 종종 로그인 후에 bash
. 를 사용하여 컴파일하는 코드를 tcsh
작성 중인데 실행 파일이 실패할 때 코어 덤프 파일을 만들고 싶습니다.C
gcc
무제한 코어 덤프 크기를 수동으로 선택할 수 있다는 것을 알고 있지만 입력하고 싶지 않습니다.
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
노트.이 작업은 루트로 수행되어야 하며 이 트릭이 작동하려면 다음 사항이 충족되어야 합니다.
이 파일은
/etc/security/limits.conf
사용자와 루트에 대해 적절한 하드/소프트 제한을 설정합니다. 코어 덤프 크기가 2000kB로 하드 제한되어 있는 경우 이를~/.bashrc
3000kB로 수정하면 코어 덤프 크기 제한은 계속 2000kB로 유지됩니다.찾다limits.conf
.아래 파일에는 설정을 허용하는
/etc/pam.d
이 줄이 포함되어 있습니다 .session required pam_limits.so
/etc/security/limits.conf
이 파일에는 생성된 코어 파일의 형식을 지정하는 가
/etc/sysctl.conf
포함되어 있습니다kernel.core_pattern = core.%e.%p
. 여기서 %e는 실행 파일 이름이고 %p는 pid입니다.