Linuxで別のユーザーの「ulimit -a」値を見つける方法を知っている人はいますか?ユーザーAがユーザーBのulimit値を確認できるようにしたい。ユーザーAとユーザーBが非rootユーザーであると仮定します。
前もって感謝します
私が正しく理解しているなら、あなたは次のようなことを達成したいと思っています...
私がrootであり、ユーザーfredに構成されたソフト制限情報を確認したい場合、次のアプローチ:
su - fred -c "ulimit -Sa"
目的の値を返します。
あるいは、あなたの質問に従って、あなたがルートでない場合は、Sudoを使用し、必要に応じて、ここに示すように実行時に必要なパスワードを注入することができます
echo "freds password" | Sudo -Siu fred ulimit \-Sa
私はお勧めします:
grep 'open files' /proc/$( pgrep -o <some-user> )/limits
例えば:
grep 'open files' /proc/$( pgrep -o memcache )/limits
Pgrep -oが最も古いプロセスと一致することを理解する必要があります。私はそれが親だと思います。
パンチョの答えは正しいですが、次のようなエラーが発生することがあります。
su - www-data -c "ulimit -n"
ディレクトリなし、HOME = /でログイン
このアカウントは現在利用できません。
これを克服するためにシェルを指定できます:
su www-data --Shell /bin/bash --command "ulimit -aH"
(-aH
ハードリミット、-aS
ソフトリミットを設定します)
ユーザーのプロセスを選択し、制限を特定します。
return-limits(){
for process in $@; do
process_pids=`pgrep $process`
if [ -z $@ ]; then
echo "[no $process running]"
else
for pid in $process_pids; do
echo "[$process #$pid -- limits]"
cat /proc/$pid/limits
done
fi
done
}
return-limits mongod