web-dev-qa-db-ja.com

他のユーザーのulimit -aを見つけます

Linuxで別のユーザーの「ulimit -a」値を見つける方法を知っている人はいますか?ユーザーAがユーザーBのulimit値を確認できるようにしたい。ユーザーAとユーザーBが非rootユーザーであると仮定します。

前もって感謝します

7
gr8odinsraven

私が正しく理解しているなら、あなたは次のようなことを達成したいと思っています...

私がrootであり、ユーザーfredに構成されたソフト制限情報を確認したい場合、次のアプローチ:

su - fred -c "ulimit -Sa"

目的の値を返します。

あるいは、あなたの質問に従って、あなたがルートでない場合は、Sudoを使用し、必要に応じて、ここに示すように実行時に必要なパスワードを注入することができます

echo "freds password" | Sudo -Siu fred ulimit \-Sa
4
Pancho

私はお勧めします:

grep 'open files' /proc/$( pgrep -o <some-user> )/limits

例えば:

grep 'open files' /proc/$( pgrep -o memcache )/limits

Pgrep -oが最も古いプロセスと一致することを理解する必要があります。私はそれが親だと思います。

4
Renich

パンチョの答えは正しいですが、次のようなエラーが発生することがあります。

su - www-data -c "ulimit -n"

ディレクトリなし、HOME = /でログイン

このアカウントは現在利用できません。

これを克服するためにシェルを指定できます:

su www-data --Shell /bin/bash --command "ulimit -aH"

-aHハードリミット、-aSソフトリミットを設定します)

3
huynhbaoan

ユーザーのプロセスを選択し、制限を特定します。

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