- ulimits são por processo , não por usuário nem por sistema.
O comando ulimit
está embutido no shell, então permanece dentro do mesmo processo; no entanto, o limite ajustado afeta somente o processo , bem como tudo o que você executa a partir dele (os processos filhos herdam os mesmos limites).
No entanto, ./startup.sh
é executado como um processo separado - portanto, ele ajusta com êxito os limites próprios , mas isso não se propaga magicamente para o pai.
(Essa é a mesma situação que com cd
ou 'exportar - mesmo que você possa usá-los em um script, todos eles alteram os parâmetros do próprio processo do script, não de todo o sistema, e serão esquecidos assim que processo de script sai.)
Nota: Existe outro comando, prlimit
, que permite ajustar os limites de recursos de outro processo (especificado pelo PID). Um script pode alterar o limite de arquivo de seu processo pai assim:
prlimit --pid=$PPID --nofile=4096