Bagaimana saya bisa membatasi penggunaan RAM untuk pengguna atau proses tertentu?

8

Saya menggunakan layanan latar belakang yang bocor memori dari waktu ke waktu. Untuk mencegah penggunaan Alt+ SysRq REISUB[ 1 ], saya ingin membatasi penggunaan RAM untuk satu proses atau pengguna sistem.

Saya benar-benar ingin mengatakan: Pengguna x dapat menggunakan jumlah maksimum RAM 1 GB.

Apakah ini layak? Apakah saya memerlukan jenis mesin virtual untuk ini? Saya menggunakan Ubuntu 9,10.

guerda
sumber

Jawaban:

10

ulimit adalah temanmu Lihat bendera -m. Saya pikir Anda mengatur ini sebelum Anda memulai proses Anda dan itu berlaku sejak saat itu (dalam shell saat ini).

basszero
sumber
Terima kasih, petunjuk yang bagus! Seperti yang saya mengerti ulimit, itu membatasi semua memori pengguna / proses / konsumsi apa pun. Saya hanya ingin membatasi untuk satu pengguna / proses & subproses.
guerda
1
ulimit adalah perintah shell, dan hanya memengaruhi proses yang dimulai dari shell yang sama setelah ulimit dijalankan. Anda memulai proses dalam skrip shell dengan perintah ulimit untuk memengaruhi proses itu saja.
KeithB
4

Selain perintah shell ulimit(untuk bash) atau limit(untuk csh), Anda dapat mengontrol ini dari dalam kode Anda dengan ulimit()fungsi.

KeithB
sumber
1
Halaman wajib: linux.die.net/man/1/ulimit (perintah shell) dan linux.die.net/man/3/ulimit (fungsi C).
Stephan202