อะไรคือความแตกต่างระหว่างขีด จำกัด ที่แข็งและอ่อนใน ulimit?
สำหรับจำนวนไฟล์ที่เปิดฉันมีขีด จำกัด ซอฟต์ 1024 และขีด จำกัด ฮาร์ด 10240 มันเป็นไปได้ที่จะรันโปรแกรมที่เปิดมากกว่า 1024 ไฟล์ ขีด จำกัด ซอฟต์คืออะไร?
อะไรคือความแตกต่างระหว่างขีด จำกัด ที่แข็งและอ่อนใน ulimit?
สำหรับจำนวนไฟล์ที่เปิดฉันมีขีด จำกัด ซอฟต์ 1024 และขีด จำกัด ฮาร์ด 10240 มันเป็นไปได้ที่จะรันโปรแกรมที่เปิดมากกว่า 1024 ไฟล์ ขีด จำกัด ซอฟต์คืออะไร?
คำตอบ:
ขีด จำกัด ฮาร์ดสามารถเพิ่มได้โดย root เท่านั้น (กระบวนการใด ๆ สามารถลดค่าได้) ดังนั้นจึงมีประโยชน์สำหรับความปลอดภัย: กระบวนการที่ไม่ใช่รูทไม่สามารถเกินขีด จำกัด ฮาร์ดไดรฟ์ได้ แต่ไม่สะดวกที่กระบวนการที่ไม่ใช่รูทไม่สามารถมีขีด จำกัด ต่ำกว่าลูกได้
กระบวนการนุ่มสามารถเปลี่ยนแปลงได้ตลอดเวลา ดังนั้นจึงสะดวกตราบเท่าที่กระบวนการทำงานร่วมกัน แต่ไม่ดีต่อความปลอดภัย
กรณีการใช้งานทั่วไปสำหรับข้อ จำกัด ที่อ่อนนุ่มคือการปิดการใช้งานการถ่ายโอนหลัก ( ulimit -Sc 0
) ในขณะที่ยังคงตัวเลือกในการเปิดใช้งานสำหรับกระบวนการเฉพาะที่คุณกำลังแก้จุดบกพร่อง ( (ulimit -Sc unlimited; myprocess)
)
ulimit
คำสั่งเชลล์เป็นเสื้อคลุมรอบsetrlimit
เรียกระบบเพื่อให้เป็นสถานที่ที่คุณจะได้พบกับเอกสารที่ชัดเจน
โปรดทราบว่าระบบบางระบบอาจไม่ใช้งานข้อ จำกัด ทั้งหมด โดยเฉพาะบางระบบไม่รองรับขีด จำกัด ต่อกระบวนการของตัวอธิบายไฟล์ (Linux ทำ) หากคุณไม่ได้ใช้คำสั่งเชลล์อาจเป็นคำสั่งไม่ใช้
ulimit -m
, RLIMIT_RSS
) เป็นตัวอย่างของการ จำกัด ที่ไม่มีผลกับ Linux อีกต่อไป แม้ว่าขีด จำกัด หน่วยความจำเสมือน ( ulimit -v
, RLIMIT_AS
) ใช้งานได้
setrlimit
(เท่าที่ได้รับอนุญาตจากวงเงินยากเว้นแต่ทำงานเป็นรากของหลักสูตร) โปรแกรมส่วนใหญ่ไม่มีคำสั่งที่ให้ผู้ใช้ทำเช่นนั้น แต่คุณสามารถลองแนบโปรแกรมด้วยโปรแกรมดีบั๊กเกอร์และทำการsetrlimit
โทรออกหรือภายใต้ Linux คุณสามารถโทรได้prlimit
(ซึ่งฉันไม่รู้เชลล์เลย) ยูทิลิตี้)
prlimit
โปรแกรมอรรถประโยชน์ของเชลล์ด้วย
ขีด จำกัด ฮาร์ดมีวัตถุประสงค์เพื่อความปลอดภัย สำหรับผู้ใช้ที่ไม่ใช่รูทเขาสามารถลดขีด จำกัด ฮาร์ดจากขีด จำกัด ฮาร์ดที่ตั้งไว้ในปัจจุบันเท่านั้น เขาไม่สามารถเพิ่มได้ การเพิ่มขีด จำกัด ฮาร์ดสามารถทำได้โดยผู้ใช้รูทเท่านั้น (หรืออาจมีสิทธิ์ sudo แต่ไม่แน่ใจเกี่ยวกับเรื่องนั้น) สิ่งที่ผู้ใช้ที่ไม่ใช่รูทสามารถทำได้คือเลือกขีด จำกัด (เรียกว่า soft limit) ซึ่งสามารถอยู่ในช่วง [0, hard limit] สำหรับกระบวนการ มันเป็นข้อ จำกัด ที่อ่อนนุ่มที่เห็นและนำมาพิจารณาโดยกระบวนการ
ulimit -n
? ลองใช้เชลล์ด้วยค่าที่ต่ำมาก (bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'
) ผลลัพธ์คืออะไร