¿Hay alguna manera de verificar el uso de los ulimits para un usuario determinado? Sé que puede cambiar ulimits para un solo proceso cuando lo inicia o para un único shell cuando se ejecuta, pero quiero poder "monitorear" qué tan cerca está un usuario de alcanzar sus límites. Estoy planeando escribir un bash
script que informará a las estadísticas el porcentaje de uso actual. Específicamente, quiero rastrear:
- abrir archivos (
ulimit -n
) - max procesos de usuario (
ulimit -u
) - señales pendientes (
ulimit -i
)
Lo que quiero es el porcentaje de uso (0-100).
Respuestas:
Quizás esto ayude para la primera pregunta:
Si conoce los ID de proceso (PID) del usuario específico, puede obtener los límites para cada proceso con:
Puede obtener el número de archivos abiertos para cada PID con:
Y luego simplemente compare el valor de
Max open files
con el número de descriptores de archivo abiertos del segundo comando para obtener un porcentaje.fuente
Imprima el porcentaje del usuario actual de archivos abiertos, proceso y señales pendientes, mediante varios métodos inconvenientes y herramientas estándar:
Salida en mi sistema:
Suponiendo que esos números son buenos, lo que muestra esta respuesta es que se puede hacer en shell, pero probablemente no, a menos que haya métodos de shell mucho mejores. Más bien, esta Q estaría mejor hecha con
gcc
, opython
, etc.fuente
Los límites son propiedades de los procesos y se heredan a los procesos secundarios.
No puede obtener los límites para otro proceso.
fuente
man lsof
,man ps
...lsof
mantenedor, claro. Pero no es relevante para el usuario final. También es incorrecto en el contexto de esta pregunta, ya que se trata específicamente de Linux, que tiene interfaces documentadas (man proc
).-1