Apakah ada cara untuk memeriksa penggunaan ulimit untuk pengguna tertentu? Saya tahu bahwa Anda dapat mengubah ulimits untuk satu proses ketika Anda memulai atau untuk satu shell saat menjalankan tetapi saya ingin dapat "memantau" seberapa dekat pengguna untuk mencapai batas mereka. Saya berencana menulis bash
skrip yang akan melaporkan kembali ke statsd persentase penggunaan saat ini. Secara khusus, saya ingin melacak:
- buka file (
ulimit -n
) - proses pengguna maks (
ulimit -u
) - sinyal tertunda (
ulimit -i
)
Yang saya inginkan adalah persentase penggunaan (0-100).
Jawaban:
Mungkin ini membantu untuk pertanyaan pertama:
Jika Anda mengetahui ID proses (PID) dari pengguna tertentu, Anda bisa mendapatkan batas untuk setiap proses dengan:
Anda bisa mendapatkan jumlah file yang dibuka untuk setiap PID dengan:
Dan kemudian bandingkan nilai
Max open files
dengan jumlah deskriptor file terbuka dari perintah kedua untuk mendapatkan persentase.sumber
Keluarkan persentase pengguna saat ini dari file terbuka, proc, dan sinyal yang tertunda, dengan beberapa metode yang tidak nyaman dan alat standar:
Output pada sistem saya:
Dengan asumsi angka-angka itu baik, apa yang ditunjukkan oleh jawaban ini adalah bahwa hal itu dapat dilakukan di shell, tetapi mungkin tidak boleh, kecuali ada metode shell yang jauh lebih baik. Sebaliknya, Q ini lebih baik dilakukan dengan
gcc
, ataupython
, dll.sumber
Ulimit adalah properti dari proses dan diwariskan ke proses anak.
Anda tidak dapat memperoleh batasan untuk proses lain.
sumber
man lsof
,,man ps
...lsof
pengelola, tentu saja. Tetapi tidak relevan untuk pengguna akhir. Juga salah dalam konteks pertanyaan ini, karena menanyakan secara spesifik tentang Linux, yang memiliki antarmuka yang didokumentasikan (man proc
).-1