Uno de mis colegas se presentó con el problema de que no podía iniciar sesión en una cuenta de usuario en particular en una máquina con Linux. Sin embargo, pude iniciar sesión en otra cuenta en la misma máquina, pero no en la que mi colega realmente quiere. Incluso traté de cambiar (su -) de mi cuenta de usuario en la misma máquina a su cuenta, pero solo veo un mensaje de error como "su:no se puede establecer la identificación del usuario:el recurso no está disponible temporalmente “. Bueno, ese mensaje de error nos dio una pista de que el problema podría estar relacionado con una cuenta en sí y no con la máquina.
A continuación se muestra la instantánea del mensaje de error:
$su - swift Password: su: cannot set user id: Resource temporarily unavailable
La causa puede deberse al "límite de ejecución del proceso" del usuario excedido. Para verificar esto, ejecuté el siguiente comando.
$ ps -eLF|grep swift | wc -l
1026
Donde “-L La opción ” mostrará todos los procesos para la cuenta de usuario 'swift'.
Descubra el proceso de usuario máximo permitido usando el siguiente comando:
$ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) 1024
pending signals (-i) 514963
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
En el caso anterior, 1026 es mayor que el máximo permitido de 1024. La solución es aumentar el número máximo de procesos permitidos para una cuenta de usuario.
Solución:
1. El límite del proceso se puede aumentar editando:/etc/security/limits.conf (necesita privilegios de root para hacer eso)
swift hard nproc 4096
No es necesario reiniciar ningún servicio.
2. Si no tiene el privilegio de raíz, el usuario puede aumentar el límite usando el siguiente comando.
$ulimit -u 4096
3. detener cualquier proceso no deseado
¡Eso es todo! Mi colega salió del lugar con una gran sonrisa en su rostro.