Uno dei miei colleghi ha riscontrato il problema di non essere in grado di accedere a un determinato account utente su una macchina Linux. Tuttavia, sono stato in grado di accedere a un altro account sulla stessa macchina, ma non a quello che il mio collega desidera effettivamente. Anche io ho provato a passare (su -) dal mio account utente sulla stessa macchina al suo account, ma vedo solo un messaggio di errore come "su:impossibile impostare l'id utente:risorsa temporaneamente non disponibile “. Bene, quel messaggio di errore ci ha fornito un suggerimento che il problema potrebbe riguardare un account stesso e non il computer.
Di seguito è riportato l'istantanea del messaggio di errore:
$su - swift Password: su: cannot set user id: Resource temporarily unavailable
La causa potrebbe essere dovuta al "limite di esecuzione del processo" dell'utente superato. Per verificarlo, ho eseguito il comando seguente.
$ ps -eLF|grep swift | wc -l
1026
Dove "-L L'opzione "visualizza tutti i processi per l'account utente "swift".
Scopri la procedura per utenti massimi consentito utilizzando il comando seguente:
$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
Nel caso precedente, 1026 è maggiore del massimo consentito di 1024. La soluzione è aumentare il numero massimo di processi consentiti per un account utente.
Soluzione:
1. Il limite del processo può essere aumentato modificando:/etc/security/limits.conf (è necessario il privilegio di root per farlo)
swift hard nproc 4096
Non è necessario riavviare alcun servizio.
2. Se non disponi del privilegio di root, l'utente può aumentare il limite utilizzando il comando seguente.
$ulimit -u 4096
3. interrompere eventuali processi indesiderati
Questo è tutto! Il mio collega ha lasciato il posto con un grande sorriso stampato in faccia.