Como posso definir automaticamente o tamanho do dump principal em um único usuário?

0

Estou executando o OpenSUSE. Eu normalmente abro o console com um shell de logon não interativo bash e freqüentemente uso tcsh após o logon. Estou escrevendo um código C , compilando com gcc , e gostaria de ter os arquivos de despejo principais criados sempre que um executável falha.

Eu sei que posso selecionar manualmente que o tamanho do dump principal seja ilimitado, mas não quero digitar

limits coredumpsize unlimited

em tcsh ou

ulimit -c unlimited

no shell padrão bash toda vez que eu fizer logon como meu usuário.

Existe uma maneira de definir o tamanho do dump principal automaticamente sempre que eu fizer logon como usuário em bash e / ou tcsh ?

    
por Andrea L. 23.03.2018 / 02:56

1 resposta

0

Depois de um pouco de pesquisa, posso ter resolvido o problema. Depois que eu fizer o login na máquina UNIX, ele me redireciona para o diretório home , de acordo com o shell escolhido, dos arquivos disponíveis no sistema a partir do arquivo \etc\passwd da seguinte forma:

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

Isso explica o não-login interativo bash shell (konsole). O shell, seja bash ou tcsh , e os seguintes arquivos são lidos no login / logout:

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

Então, adicionando as seguintes linhas aos arquivos ~/.tcshrc e ~/.bashrc :

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

em que X é um valor (kB) ou unlimited e deve funcionar.

Às vezes, é dito para também editar o arquivo ~/.profile . Eu não o editei, mesmo que MY bash shell o identifique no login. Por que isso não faz diferença? Porque eu sempre uso um shell de não-login, ao clicar duas vezes no konsole para abrir o terminal. O arquivo ~/.profile é originado na inicialização apenas em um shell de login (geralmente sh , que eu não uso ). Eu tenho bash que olha os seguintes arquivos em sequência:

.bash_profile -> .bash_login -> .profile

no meu caso, os dois primeiros arquivos não existem, então bash sources .profile se eu usar um shell de login.

OBSERVAÇÃO. Essa operação deve ser feita como root e, para que esse truque funcione, as seguintes condições devem / devem ser atendidas:

  1. O arquivo /etc/security/limits.conf define limites de hardware / software adequados para o usuário e o root. Se um limite rígido do tamanho do dump principal de 2000 kB for imposto, então quando modificarmos o ~/.bashrc com 3000 kB, o limite do tamanho do dump principal continuará sendo de 2000 kB. Consulta limits.conf .

  2. Os arquivos em /etc/pam.d contêm a linha session required pam_limits.so , para permitir que as configurações de /etc/security/limits.conf ocorram.

  3. Que o arquivo /etc/sysctl.conf contém kernel.core_pattern = core.%e.%p , isso define o formato dos arquivos principais gerados, em que% e é o nome do arquivo executável e% p é o pid.

por 26.03.2018 / 12:09