Apakah proses dalam cgroup harus disetel setiap boot? Jika demikian, bagaimana cara bertahannya?

9

Saya membaca jawaban ini untuk pertanyaan tentang menetapkan batas untuk proses dengan menggunakan cgroup. Sampel yang diberikan menetapkan batas untuk suatu proses (dalam contoh, sshd). Dalam jawabannya, PID proses diatur secara manual. Ini tidak dapat diterima untuk tujuan saya, saya ingin proses dimulai dari aplikasi yang diberikan untuk selalu memiliki batas yang ditetapkan, tidak peduli kapan mereka dimulai atau dibatasi oleh berapa banyak proses tersebut dimulai.

Mungkin tidak jelas dari contoh bagaimana itu akan terjadi, jadi penjelasan yang jelas atau tautan ke satu juga akan diterima. Contoh di kernel cgroups.txt tampaknya menggunakan model yang sama seperti yang sudah diberikan di atas .

casualunixer
sumber

Jawaban:

6

Cara termudah adalah menggunakan systemdyang mungkin bertanggung jawab untuk Anda sshd(tergantung pada distribusinya). Anda dapat dengan mudah mengkonfigurasi batasan dalam sshdfile unit. systemdtetap menempatkan semua layanan dalam cgroup yang terpisah.

Tanpa systemdsolusi termudah mungkin merupakan modifikasi pada sshdskrip awal (perhatikan bahwa itu tidak ditimpa oleh pembaruan; mungkin ide yang baik untuk menyalinnya ke nama yang berbeda dan menonaktifkan skrip asli).

Hauke ​​Laging
sumber
Ada aplikasi bermasalah yang membatasi akan sangat bagus untuk dibersihkan, itu bukan sshd. Hanya saja sshd digunakan dalam contoh ini. Agaknya, Anda dapat menerapkan cgroup ke proses apa pun. Sebuah skrip mungkin akan menjadi solusi termudah. Sepertinya cgroup akan menjadi jawaban yang bagus.
casualunixer
@casualunixer Anda hanya perlu menulis file unit untuk aplikasi Anda. Anda dapat mengkonfigurasi agar startet secara otomatis saat boot atau hanya secara manual.
Hauke ​​Laging
@laging, jika Anda bisa memberikan contoh file unit dalam jawaban, atau penunjuk untuk dokumentasi yang serupa, itu akan dihargai.
casualunixer
@casualunixer Persis di mana orang akan mengharapkannya: man systemdmengarah ke man 5 systemd.unitprospek man 5 systemd.service. Di sistem saya file SSH adalah /usr/lib/systemd/system/sshd.service.
Hauke ​​Laging
Ah, mengingat saya tidak menginstal systemd, meskipun itu adalah topik dari jawaban ini, itu tidak segera jelas.
casualunixer