apakah perubahan pada /etc/security/limits.conf memerlukan reboot?

144

Apakah perubahan /etc/security/limits.confmemerlukan reboot sebelum mulai berlaku?

Seperti jika saya memiliki skrip yang menetapkan batas berikut /etc/security/limits.conf, apakah ini perlu me-reboot sistem sebelum batas itu berlaku?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Alexej Magura
sumber
2
logout harus cukup
UVV
Edit file /etc/security/limits.d/90-nproc.conf dan reboot sistem Anda

Jawaban:

108

Tidak, tetapi Anda harus menutup semua jendela sesi aktif. Mereka masih ingat nilai-nilai lama. Dengan kata lain, logout dan kembali. Setiap sesi baru jarak jauh atau shell keamanan lokal mengambil efek dari perubahan batas .

Slyx
sumber
17
Bagaimana jika saya ingin menetapkan batas untuk pengguna yang tidak memiliki login, seperti jika saya ingin menetapkan nofilebatas untuk 94000untuk mongodbpengguna? Bagaimana saya melakukannya tanpa reboot? Apakah saya hanya perlu me-restart mongodblayanan?
Alexej Magura
2
@AlexejMagura Anda dapat memodifikasi rlimits dari proses yang berjalan dengan prlimitperintah.
Bratchley
7
@Gilles, terima kasih atas langkah-langkahnya, saya mengedit jawaban saya untuk menghindari ambiguitas. Namun Memulai menggunakan layanan baru sudo service mongodb restartsudah cukup untuk membiarkan layanan berjalan dengan nilai batas baru.
Slyx
6
jika Anda menggunakan Ubuntu, dan mongodb dimulai oleh pemula, maka mengubah batas ini tidak akan memengaruhi mongodb. Karena upstarttidak membaca / etc / security config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669 Anda harus mengatur limitbait dalam file konfigurasi pemula.
HVNTweeting
5
Ini masalah lain. upstartoleh desain mengabaikan batas yang ditetapkan /etc/security/limits.conf.
Slyx
35

Terapkan perubahan secara langsung ke proses yang berjalan jika Anda telah menginstal prlimit (dilengkapi dengan util-linux-2.21)

prlimit --pid <pid> --<limit>=<soft>:<hard>

sebagai contoh

prlimit --pid 12345 --nofile=1024:2048

Rujuk ke sini

Ram
sumber
29

Untuk sementara menetapkan batas file terbuka untuk pengguna yang saat ini Anda masuki (misalnya 'root'): Anda juga dapat menggunakan ulimitperintah untuk mengubah nilai dalam shell Anda saat ini. Namun, batas keras hanya dapat disesuaikan ke bawah kecuali jika Anda melakukan root.

Contoh:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Untuk mengubah nofileke 94000 yang dapat Anda lakukan:

ulimit -n 94000
Boogy
sumber
15

Batas diwarisi dari proses induk ke proses anaknya. Proses yang berjalan sebagai root dapat mengubah batas secara sewenang-wenang; proses lain tidak dapat meningkatkan batas keras. Dengan demikian batas keras yang ditetapkan oleh proses login memengaruhi semua proses dalam satu sesi.

Jika Anda berubah /etc/security/limits.conf, ini akan memengaruhi semua sesi baru, dan proses di sesi baru ini. Ini tidak akan memengaruhi proses yang sudah berjalan, maupun proses yang dimulai oleh proses yang sudah berjalan.

Jadi, jika Anda perlu menambah beberapa batasan, Anda harus keluar dan kembali, atau memulai sesi lain (misalnya dengan ssh localhost, atau pada konsol lain).

Gilles
sumber
4

Mengutip jawaban @ Tombart

Batas ini akan diterapkan setelah reboot.

Jika Anda ingin menerapkan perubahan tanpa reboot, modifikasi /etc/pam.d/common-sessiondengan menambahkan baris ini di akhir file:

session required pam_limits.so
serv-inc
sumber