Einer meiner Kollegen hatte das Problem, dass er sich auf einem Linux-Rechner nicht bei einem bestimmten Benutzerkonto anmelden konnte. Allerdings konnte ich mich auf demselben Rechner bei einem anderen Konto anmelden, aber nicht bei dem, das mein Kollege eigentlich möchte. Sogar ich habe versucht, (su -) von meinem Benutzerkonto auf demselben Computer zu seinem Konto zu wechseln, sehe aber nur eine Fehlermeldung wie „su:Benutzer-ID kann nicht festgelegt werden:Ressource vorübergehend nicht verfügbar “. Nun, diese Fehlermeldung gab uns einen Hinweis darauf, dass das Problem möglicherweise bei einem Konto selbst und nicht bei der Maschine liegt.
Unten ist die Momentaufnahme der Fehlermeldung:
$su - swift Password: su: cannot set user id: Resource temporarily unavailable
Die Ursache könnte am „Prozesslauflimit“ des Benutzers liegen übertroffen. Um dies zu überprüfen, habe ich den folgenden Befehl ausgeführt.
$ ps -eLF|grep swift | wc -l
1026
Wobei „-L “ zeigt alle Prozesse für das Benutzerkonto „swift“ an.
Finden Sie den maximalen Benutzerprozess heraus mit dem folgenden Befehl erlaubt:
$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
Im obigen Fall ist 1026 größer als der maximal zulässige Wert von 1024. Die Lösung besteht darin, die maximal zulässige Anzahl von Prozessen für ein Nutzerkonto zu erhöhen.
Lösung:
1. Das Prozesslimit kann durch Bearbeiten erhöht werden:/etc/security/limits.conf (Dafür benötigen Sie Root-Rechte)
swift hard nproc 4096
Es müssen keine Dienste neu gestartet werden.
2. Wenn Sie nicht über die Root-Berechtigung verfügen, kann der Benutzer das Limit mit dem folgenden Befehl erhöhen.
$ulimit -u 4096
3. Stoppen Sie alle unerwünschten Prozesse
Das ist es! Mein Kollege verließ den Ort mit einem breiten Lächeln im Gesicht.