同僚の1人が、Linuxマシンの特定のユーザーアカウントにログインできないという問題を抱えていました。ただし、同じマシン上の別のアカウントにログインすることはできましたが、同僚が実際にログインしたいアカウントにはログインできませんでした。同じマシンのユーザーアカウントから彼のアカウントに(su-)切り替えようとしましたが、「 su:ユーザーIDを設定できません:リソースが一時的に利用できません」というエラーメッセージしか表示されません。 「。そのエラーメッセージは、問題がマシンではなくアカウント自体にある可能性があることを示唆しています。
以下は、エラーメッセージのスナップショットです。
$su - swift Password: su: cannot set user id: Resource temporarily unavailable
原因は、ユーザーの「プロセス実行制限」が原因である可能性があります 超えました。これを確認するために、次のコマンドを実行しました。
$ ps -eLF|grep swift | wc -l
1026
ここで、「 -L 」オプションは、ユーザーアカウント「swift」のすべてのプロセスを表示します。
最大ユーザープロセスを確認する 以下のコマンドを使用して許可されます:
$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
上記の場合、1026は許可されている最大1024を超えています。解決策は、ユーザーアカウントに許可されているプロセスの最大数を増やすことです。
解決策:
1.プロセス制限は、次の編集によって増やすことができます: /etc/security/limits.conf (これを行うにはroot権限が必要です)
swift hard nproc 4096
サービスを再起動する必要はありません。
2. root権限がない場合、ユーザーは以下のコマンドを使用して制限を増やすことができます。
$ulimit -u 4096
3.不要なプロセスを停止します
それでおしまい!同僚は笑顔でその場を去りました。