ulimit -d
define o tamanho máximo de um segmento de dados de processo , não apenas o tamanho máximo do segmento .data de binário . Você o usaria para limitar a quantidade de memória que um processo pode usar; de acordo com POSIX :
RLIMIT_DATA
This is the maximum size of a data segment of the process, in bytes. If this limit is exceeded, the malloc() function shall fail with errno set to [ENOMEM].
O limite se aplica a binários em que um processo cujo segmento de dados foi limitado não poderá exec
um binário com um segmento .data maior que o limite do segmento de dados. O limite continua a ser aplicado depois disso, de modo que o segmento de dados não possa crescer além do limite enquanto o processo estiver em execução.
Como todos os limites, isso é relevante em vários cenários. Em um sistema multiusuário, você definiria limites para que um único usuário não monopolizasse os recursos do sistema ou afetasse a capacidade de outros usuários de usar o sistema. Você também pode definir limites para que um único processo não monopolize os recursos do sistema ( por exemplo, um navegador da Web ou uma grande compilação ...). Hoje em dia você provavelmente é melhor usar algo como cgroups em um sistema Linux para esse tipo de controle de recursos.