การเปลี่ยนแปลงใน /etc/security/limits.conf ต้องมีการรีบูตหรือไม่


144

การเปลี่ยนแปลง/etc/security/limits.confต้องมีการรีบูตก่อนที่จะมีผลหรือไม่

เช่นถ้าฉันมีสคริปต์ที่ตั้งค่าขีด จำกัด ต่อไป/etc/security/limits.confนี้สิ่งนี้จำเป็นต้องรีบูตระบบก่อนที่ข้อ จำกัด เหล่านั้นจะมีผลหรือไม่

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000

2
ออกจากระบบควรจะเพียงพอ
UVV

แก้ไขไฟล์ /etc/security/limits.d/90-nproc.conf และรีบูทระบบของคุณ

คำตอบ:


108

ไม่ใช่ แต่คุณควรปิดหน้าต่างเซสชันที่ใช้งานอยู่ทั้งหมด พวกเขายังคงจำค่าเก่าได้ กล่าวอีกนัยหนึ่งคือออกจากระบบและกลับเข้าสู่ระบบเซสชันระยะไกลใหม่ทุกครั้งหรือเชลล์ที่ปลอดภัยแบบโลคัลมีผลต่อการเปลี่ยนแปลงข้อ จำกัด


17
จะเกิดอะไรขึ้นถ้าฉันต้องการตั้งค่าขีด จำกัด สำหรับผู้ใช้ที่ไม่มีล็อกอินเช่นถ้าฉันต้องการตั้งค่าnofileขีด จำกัด94000สำหรับmongodbผู้ใช้ ฉันจะทำอย่างนั้นโดยไม่ต้องรีบูตได้อย่างไร ฉันจะต้องเริ่มmongodbบริการใหม่หรือไม่
Alexej Magura

2
@AlexejMagura คุณสามารถแก้ไข rlimits ของกระบวนการที่กำลังรันด้วยprlimitคำสั่ง
Bratchley

7
@Gilles ขอบคุณสำหรับ precisions ฉันแก้ไขคำตอบของฉันเพื่อหลีกเลี่ยงความคลุมเครือ อย่างไรก็ตามการเริ่มบริการใหม่โดยใช้sudo service mongodb restartนั้นเพียงพอที่จะให้บริการทำงานด้วยค่าขีด จำกัด ใหม่
Slyx

6
หากคุณใช้ Ubuntu และ mongodb เริ่มต้นโดยพุ่งพรวดการเปลี่ยนขีด จำกัด เหล่านี้จะไม่ส่งผลกระทบต่อ mongodb ตามที่upstartไม่ได้อ่าน / etc / security config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669 คุณต้องตั้งstanzalimitในไฟล์ config ที่พุ่งพรวด
HVNS การประชุม

5
มันเป็นปัญหาอื่น upstartโดยการออกแบบจะไม่สนใจข้อ จำกัด /etc/security/limits.confตั้งอยู่ใน
Slyx

35

ใช้การเปลี่ยนแปลงโดยตรงกับกระบวนการที่กำลังทำงานหากคุณติดตั้ง prlimit (มาพร้อมกับ util-linux-2.21)

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

ตัวอย่างเช่น

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

อ้างอิงที่นี่


29

ในการตั้งค่าขีด จำกัด การเปิดไฟล์ชั่วคราวสำหรับผู้ใช้คุณกำลังเข้าสู่ระบบภายใต้ (เช่น 'root'): คุณยังสามารถใช้ulimitคำสั่งเพื่อเปลี่ยนค่าในเชลล์ปัจจุบันของคุณ อย่างไรก็ตามขีด จำกัด ฮาร์ดสามารถปรับลงได้เว้นแต่คุณจะรูต

ตัวอย่าง:

# 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

หากต้องการเปลี่ยนnofileไป94000คุณสามารถทำได้:

ulimit -n 94000

15

ข้อ จำกัด นั้นสืบทอดมาจากกระบวนการพาเรนต์จนถึงกระบวนการลูก กระบวนการที่ทำงานในฐานะรูทสามารถเปลี่ยนข้อ จำกัด ได้เอง กระบวนการอื่นไม่สามารถเพิ่มขีด จำกัด ได้ยาก ดังนั้นข้อ จำกัด ฮาร์ดที่กำหนดโดยกระบวนการล็อกอินจะมีผลกับกระบวนการทั้งหมดในเซสชัน

หากคุณเปลี่ยนการดำเนินการ/etc/security/limits.confนี้จะส่งผลต่อเซสชันใหม่ทั้งหมดและกระบวนการในเซสชันใหม่เหล่านี้ มันจะไม่ส่งผลกระทบต่อกระบวนการที่กำลังทำงานอยู่หรือกระบวนการที่เริ่มต้นโดยกระบวนการที่กำลังทำงานอยู่

ดังนั้นหากคุณต้องการเพิ่มขีด จำกัด คุณจะต้องออกจากระบบและกลับเข้าสู่ระบบหรือเริ่มต้นเซสชันอื่น (เช่นด้วยssh localhostหรือบนคอนโซลอื่น)


4

อ้างคำตอบของ @ Tombart

ข้อ จำกัด เหล่านี้จะถูกนำไปใช้หลังจากรีบูต

หากคุณต้องการใช้การเปลี่ยนแปลงโดยไม่ต้องรีบูตให้แก้ไข /etc/pam.d/common-sessionโดยเพิ่มบรรทัดนี้ที่ท้ายไฟล์:

session required pam_limits.so
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.