อะไรคือความสัมพันธ์ระหว่าง "launchctl limit" และ "ulimit"?


11

ไม่มีการกำหนดค่า ulimit ใด ๆ ในไฟล์เริ่มต้นระบบ / สคริปต์เริ่มต้นเชลล์

ulimit -a แสดงให้เห็นว่า:

-u: processes                       1064
-n: file descriptors                256

launchctl limit แสดงให้เห็นว่า:

maxproc     2048           2048           
maxfiles    2048           2048

ฉันจำได้ว่าขีด จำกัด ของ launchctl ควรตรงกับเอาต์พุต ulimit ของเชลล์ฉันอาจผิด

มีความสัมพันธ์ระหว่างขีด จำกัด ของ lauchctl และ ulimit ไหม?


คุณไม่ได้รับคำตอบที่น่าพอใจจากหน้า man ของ command หรือไม่?
Andrew U.

@AndrewU หน้าคู่มือ launchctl ไม่ได้กล่าวถึงขีด จำกัด , หน้าคู่มือ ulimit ไม่ได้กล่าวถึง launchctl หรือ launchd
Howard

คำตอบ:


10

ในเชลล์ ulimit ให้ "ควบคุมทรัพยากรที่มีให้กับเชลล์และกระบวนการที่เริ่มต้นโดย" (ดูman bash) ดังนั้นมันใช้กับเชลล์และลูก ๆ เท่านั้น ข้อ จำกัด สำหรับ launchd เกี่ยวข้องกับมันและกระบวนการที่จัดการ ทั้งสองแยกจากกัน

แต่ละโปรแกรมสามารถกำหนดวงเงินทรัพยากรของตัวเองโดยการเรียกกิจวัตรมาตรฐาน C Library ulimit()หรือและgetrlimit() setrlimit()ข้อ จำกัด ของทรัพยากรบางอย่างไม่สามารถยกระดับได้เว้นแต่กระบวนการกำลังทำงานในฐานะผู้ใช้ขั้นสูง

ตัวอย่างการใช้งานจริงฉันดีบักโครงการซอฟต์แวร์ขนาดใหญ่และขีด จำกัด เริ่มต้นของเชลล์สำหรับจำนวนไฟล์ที่เปิดไม่ใหญ่พอ ในไฟล์. bashrc ของฉันฉันมีสิ่งต่อไปนี้:

# Increase the upper limit on the number of open files:
ulimit -n 1024

ตอนนี้ดีบักเกอร์ของฉันจะไม่บ่นว่ามันไม่สามารถเปิดไฟล์ทั้งหมดที่ต้องการได้ เห็นได้ชัดว่าสิ่งนี้จะไม่มีผลกระทบกับการเปิดตัว


1
หากต้องการอธิบายอย่างละเอียดว่า: การตั้งค่า ulimit เริ่มต้นนั้นมาจากlaunchctl limit; แม้ว่าผู้ใช้อาจเปลี่ยนหมายเลข ulimit แต่พวกเขาอาจไม่เกินlaunchctl limitขีด จำกัด ยาก
Howard

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