ulimit: ความแตกต่างระหว่างขีด จำกัด แบบแข็งและแบบอ่อน


87

อะไรคือความแตกต่างระหว่างขีด จำกัด ที่แข็งและอ่อนใน ulimit?

สำหรับจำนวนไฟล์ที่เปิดฉันมีขีด จำกัด ซอฟต์ 1024 และขีด จำกัด ฮาร์ด 10240 มันเป็นไปได้ที่จะรันโปรแกรมที่เปิดมากกว่า 1024 ไฟล์ ขีด จำกัด ซอฟต์คืออะไร?


4
คุณกำลังพูดถึงulimit -n? ลองใช้เชลล์ด้วยค่าที่ต่ำมาก ( bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c') ผลลัพธ์คืออะไร
Gilles

คำตอบ:


77

ขีด จำกัด ฮาร์ดสามารถเพิ่มได้โดย root เท่านั้น (กระบวนการใด ๆ สามารถลดค่าได้) ดังนั้นจึงมีประโยชน์สำหรับความปลอดภัย: กระบวนการที่ไม่ใช่รูทไม่สามารถเกินขีด จำกัด ฮาร์ดไดรฟ์ได้ แต่ไม่สะดวกที่กระบวนการที่ไม่ใช่รูทไม่สามารถมีขีด จำกัด ต่ำกว่าลูกได้

กระบวนการนุ่มสามารถเปลี่ยนแปลงได้ตลอดเวลา ดังนั้นจึงสะดวกตราบเท่าที่กระบวนการทำงานร่วมกัน แต่ไม่ดีต่อความปลอดภัย

กรณีการใช้งานทั่วไปสำหรับข้อ จำกัด ที่อ่อนนุ่มคือการปิดการใช้งานการถ่ายโอนหลัก ( ulimit -Sc 0) ในขณะที่ยังคงตัวเลือกในการเปิดใช้งานสำหรับกระบวนการเฉพาะที่คุณกำลังแก้จุดบกพร่อง ( (ulimit -Sc unlimited; myprocess))

ulimitคำสั่งเชลล์เป็นเสื้อคลุมรอบsetrlimitเรียกระบบเพื่อให้เป็นสถานที่ที่คุณจะได้พบกับเอกสารที่ชัดเจน

โปรดทราบว่าระบบบางระบบอาจไม่ใช้งานข้อ จำกัด ทั้งหมด โดยเฉพาะบางระบบไม่รองรับขีด จำกัด ต่อกระบวนการของตัวอธิบายไฟล์ (Linux ทำ) หากคุณไม่ได้ใช้คำสั่งเชลล์อาจเป็นคำสั่งไม่ใช้


6
+1 สำหรับกรณีการใช้งานขีด จำกัด ซอฟต์ Resident set size ( ulimit -m, RLIMIT_RSS) เป็นตัวอย่างของการ จำกัด ที่ไม่มีผลกับ Linux อีกต่อไป แม้ว่าขีด จำกัด หน่วยความจำเสมือน ( ulimit -v, RLIMIT_AS) ใช้งานได้
Adam Zalcman

@Gilles คุณหมายถึงโดยไม่ต้องเริ่มกระบวนการใหม่เมื่อเราเปลี่ยน soft limit มันสามารถมีผลทันทีหรือไม่?
Ryan

1
@Ryan ใช่โปรแกรมที่สามารถเปลี่ยนวงเงินนุ่มของตัวเองได้ตลอดเวลาโดยการโทรsetrlimit(เท่าที่ได้รับอนุญาตจากวงเงินยากเว้นแต่ทำงานเป็นรากของหลักสูตร) โปรแกรมส่วนใหญ่ไม่มีคำสั่งที่ให้ผู้ใช้ทำเช่นนั้น แต่คุณสามารถลองแนบโปรแกรมด้วยโปรแกรมดีบั๊กเกอร์และทำการsetrlimitโทรออกหรือภายใต้ Linux คุณสามารถโทรได้prlimit(ซึ่งฉันไม่รู้เชลล์เลย) ยูทิลิตี้)
Gilles

1
ขณะนี้มีprlimitโปรแกรมอรรถประโยชน์ของเชลล์ด้วย
telcoM

0

ขีด จำกัด ฮาร์ดมีวัตถุประสงค์เพื่อความปลอดภัย สำหรับผู้ใช้ที่ไม่ใช่รูทเขาสามารถลดขีด จำกัด ฮาร์ดจากขีด จำกัด ฮาร์ดที่ตั้งไว้ในปัจจุบันเท่านั้น เขาไม่สามารถเพิ่มได้ การเพิ่มขีด จำกัด ฮาร์ดสามารถทำได้โดยผู้ใช้รูทเท่านั้น (หรืออาจมีสิทธิ์ sudo แต่ไม่แน่ใจเกี่ยวกับเรื่องนั้น) สิ่งที่ผู้ใช้ที่ไม่ใช่รูทสามารถทำได้คือเลือกขีด จำกัด (เรียกว่า soft limit) ซึ่งสามารถอยู่ในช่วง [0, hard limit] สำหรับกระบวนการ มันเป็นข้อ จำกัด ที่อ่อนนุ่มที่เห็นและนำมาพิจารณาโดยกระบวนการ

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