Como verificar se as configurações de ulimit são aplicadas no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se as configurações de ulimit estão sendo aplicadas corretamente no Linux. Você explorará diferentes métodos para verificar os limites de recursos, começando por exibir os limites do shell atual usando ulimit -a.

Em seguida, você examinará o arquivo de configuração em todo o sistema /etc/security/limits.conf para entender como os limites são definidos para usuários e grupos. Finalmente, você aprenderá como verificar os limites reais aplicados a um processo em execução, inspecionando sua entrada /proc. Essa abordagem prática fornecerá uma compreensão abrangente de como os limites de recursos funcionam e como solucionar problemas relacionados em um ambiente Linux.

Exibir limites com ulimit -a

Nesta etapa, você aprenderá sobre limites de recursos no Linux usando o comando ulimit. Os limites de recursos controlam a quantidade máxima de recursos do sistema que um processo pode usar. Isso é importante para a estabilidade do sistema e para evitar que um único processo consuma todos os recursos disponíveis.

O comando ulimit permite que você visualize e defina esses limites para a sessão atual do shell e quaisquer processos iniciados a partir dela.

Para exibir todos os limites de recursos atuais, abra seu terminal e digite o seguinte comando:

ulimit -a

Pressione Enter.

Você verá uma saída semelhante a esta:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) <placeholder>
max locked memory       (kbytes, -l) <placeholder>
max memory size         (kbytes, -m) unlimited
open files                      (-n) <placeholder>
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) <placeholder>
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) <placeholder>
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

A saída mostra vários limites de recursos, como o número máximo de arquivos abertos (-n), o número máximo de processos de usuário (-u) e o tamanho máximo da pilha (-s). O valor unlimited significa que não há limite imposto para esse recurso.

Compreender esses limites é crucial para diagnosticar problemas de desempenho ou comportamento inesperado do programa. Por exemplo, se um programa falhar porque não consegue abrir arquivos suficientes, verificar o limite de open files com ulimit -a seria um bom primeiro passo.

Você também pode visualizar limites individuais especificando a opção. Por exemplo, para ver o limite no número de arquivos abertos:

ulimit -n

Isso exibirá um único número representando o limite atual para arquivos abertos.

Experimente o comando ulimit -a em seu terminal. Familiarize-se com os diferentes tipos de limites exibidos.

Clique em Continuar para prosseguir para a próxima etapa.

Verificar a configuração de limites com cat /etc/security/limits.conf

Na etapa anterior, você usou ulimit -a para ver os limites de recursos atuais para sua sessão de shell. Esses limites são frequentemente configurados em todo o sistema em um arquivo chamado /etc/security/limits.conf.

Este arquivo faz parte do framework Pluggable Authentication Modules (PAM) e permite que os administradores definam limites de recursos para usuários e grupos no login.

Vamos visualizar o conteúdo deste arquivo de configuração usando o comando cat. cat é um comando simples usado para exibir o conteúdo dos arquivos.

Abra seu terminal e digite o seguinte comando:

cat /etc/security/limits.conf

Pressione Enter.

Você verá o conteúdo do arquivo limits.conf. A saída será semelhante a esta (comentários e entradas específicas podem variar):

## /etc/security/limits.conf
#
#This file sets the limits for the resources available to the login session of
#users and groups. It is used together with the pam_limits module.
#
## (it is recommended to use #include files from /etc/security/limits.d/)
#

#*               soft    core            0
#root            hard    core            unlimited
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           unlimited
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

Este arquivo usa um formato simples:

<domínio> <tipo> <item> <valor>

  • <domínio>: Especifica o usuário ou grupo ao qual o limite se aplica. Pode ser um nome de usuário, um nome de grupo (precedido por @) ou * para todos os usuários.
  • <tipo>: Pode ser soft ou hard.
    • Limites soft são os limites atuais que podem ser aumentados pelo usuário (até o limite hard).
    • Limites hard são os limites máximos que um usuário não root não pode exceder.
  • <item>: O item de recurso que está sendo limitado (por exemplo, nproc para o número de processos, nofile para o número de arquivos abertos).
  • <valor>: O valor do limite.

Linhas que começam com # são comentários e são ignoradas.

Observe a linha ## (it is recommended to use #include files from /etc/security/limits.d/). Isso indica que limites específicos do sistema ou da aplicação são frequentemente colocados em arquivos separados dentro do diretório /etc/security/limits.d/. Isso ajuda a manter o arquivo principal limits.conf limpo e organizado.

Embora você não modifique este arquivo neste laboratório, entender sua estrutura e finalidade é importante para a administração do sistema. Os limites que você viu com ulimit -a são frequentemente derivados das configurações neste arquivo e nos arquivos em limits.d.

Clique em Continuar para passar para a próxima etapa.

Verificar limites do processo com cat /proc/self/limits

Nas etapas anteriores, você aprendeu sobre ulimit para visualizar os limites da sessão atual e /etc/security/limits.conf para a configuração em todo o sistema. Agora, vamos ver como um processo em execução relata seus próprios limites.

O Linux fornece um sistema de arquivos virtual chamado /proc que contém informações sobre os processos em execução e o kernel do sistema. Cada processo em execução tem um diretório em /proc nomeado após seu ID de Processo (PID).

O diretório especial /proc/self é um link simbólico que aponta para o diretório /proc do processo que o acessa. Portanto, quando você está em seu terminal e acessa /proc/self, você está olhando para as informações do seu processo de shell atual.

Dentro do diretório /proc/self, existe um arquivo chamado limits que contém os limites de recursos para esse processo específico.

Vamos visualizar os limites para o seu processo de shell atual usando cat:

cat /proc/self/limits

Pressione Enter.

Você verá uma saída semelhante a esta:

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1048576              1048576              files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       <placeholder>        <placeholder>        signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Esta saída mostra o Soft Limit e o Hard Limit para cada recurso, semelhante ao que você viu com ulimit -a. Os valores aqui refletem os limites reais aplicados ao processo que executou o comando cat (seu shell).

Compare a saída de cat /proc/self/limits com a saída de ulimit -a da primeira etapa. Você deve ver que os valores são consistentes, pois ulimit -a relata os limites do processo de shell atual.

O sistema de arquivos /proc é uma ferramenta poderosa para inspecionar o estado do seu sistema Linux e seus processos. O arquivo limits dentro do diretório de cada processo fornece uma maneira direta de verificar os limites de recursos que estão em vigor para esse processo específico.

Você agora aprendeu três maneiras diferentes de interagir com os limites de recursos no Linux: visualizar os limites da sessão atual com ulimit -a, examinar a configuração em todo o sistema em /etc/security/limits.conf e verificar os limites para um processo específico via /proc/<PID>/limits (ou /proc/self/limits).

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, você aprendeu como verificar se as configurações de ulimit são aplicadas no Linux. Você começou usando o comando ulimit -a para exibir os limites de recursos atuais para a sessão do shell, entendendo os vários limites como arquivos abertos, processos de usuário e tamanho da pilha (stack size). Este comando fornece uma visão geral rápida dos limites herdados pelos processos lançados a partir do shell atual.

Em seguida, você explorou o arquivo de configuração em todo o sistema /etc/security/limits.conf usando cat. Este arquivo define os limites de recursos padrão para usuários e grupos, que são aplicados no login. Finalmente, você verificou os limites de recursos reais para um processo em execução, examinando /proc/self/limits, que mostra os limites efetivos para o processo atual, demonstrando como verificar os limites aplicados a uma instância de processo específica.