5 votos

¿Por qué no ulimit -n de trabajo cuando se le llama en el interior de una secuencia de comandos?

Esto es muy extraño. Estoy tratando de establecer el ulimit a 60000 a través de mi startup.sh:

#!/bin/bash

ulimit -n 60000
echo "Hello! File Descriptor set"

Puede ejecutar este con ./startup.sh (755 permisos de archivo) y el eco de la línea se imprime, y no muestra los errores. Sin embargo, cuando hago ulimit -n que aún muestra 1024, ¿qué está pasando?

Lo que también me parece fascinante es que puedo escriba ulimit -n 60000 en el terminal y, a continuación, hacer ulimit -n y funciona perfectamente. ¿Por qué no puedo configurar el archivo descriptor de límite a través de una secuencia de comandos?

Debian 8, 64-bit. Contenedor OpenVZ

5voto

Nick Dixon Puntos 154

ulimits son por proceso, no por el usuario ni por el sistema.

El ulimit comando está integrado en la carcasa, por lo que permanece dentro del mismo proceso; sin embargo, los ajustes de límite de sólo afecta a ese proceso, así como todo lo que huir de él (el niño de los procesos de heredar los mismos límites).

Sin embargo, ./startup.sh se ejecuta como un programa separado del proceso – por lo tanto se ajusta correctamente a sus propios límites, pero esto no por arte de magia se propagan hacia arriba a su padre.

(Esta es la misma situación que con cd o `a la exportación, aunque los puedes utilizar en un script, que todo cambie los parámetros de la secuencia de comandos propios del proceso, no de todo el sistema, y se olvida una vez que la secuencia de comandos de proceso de las salidas.)

Nota: No es otro comando, prlimit, que le permite ajustar los límites de los recursos de otro proceso (especificado por PID). Un script puede cambiar el límite de archivo de su proceso padre como este:

prlimit --pid=$PPID --nofile=4096

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: