Jeden můj kolega přišel s problémem, že se nemohl přihlásit ke konkrétnímu uživatelskému účtu na počítači se systémem Linux. Mohl jsem se však přihlásit k jinému účtu na stejném počítači, ale ne k tomu, který můj kolega skutečně chce. Dokonce i já jsem se pokusil přepnout (su -) ze svého uživatelského účtu na stejném počítači na jeho účet, ale zobrazila se mi pouze chybová zpráva „su:nelze nastavit ID uživatele:Zdroj dočasně nedostupný “. Tato chybová zpráva nám naznačila, že problém může být v samotném účtu a ne v počítači.
Níže je snímek chybové zprávy:
$su - swift Password: su: cannot set user id: Resource temporarily unavailable
Příčinou může být uživatelův „limit běhu procesu“ překročeno. Abych to ověřil, spustil jsem níže uvedený příkaz.
$ ps -eLF|grep swift | wc -l
1026
Kde “-L ” zobrazí všechny procesy pro uživatelský účet ‚swift‘.
Zjistěte proces maximálního počtu uživatelů povoleno pomocí níže uvedeného příkazu:
$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
Ve výše uvedeném případě je 1026 větší než maximální povolená hodnota 1024. Řešením je zvýšit maximální počet procesů povolených pro uživatelský účet.
Řešení:
1. Limit procesu lze zvýšit úpravou:/etc/security/limits.conf (k tomu potřebujete oprávnění root)
swift hard nproc 4096
Není třeba restartovat žádné služby.
2. Pokud nemáte oprávnění root, může uživatel zvýšit limit pomocí níže uvedeného příkazu.
$ulimit -u 4096
3. zastavit všechny nežádoucí procesy
A je to! Můj kolega odešel z místa se širokým úsměvem na tváři.