ฉันมีกระบวนการทำงานที่ยาวนานซึ่งในที่สุดจะถึงขีด จำกัด ไฟล์สูงสุดที่เปิด ฉันรู้วิธีการเปลี่ยนหลังจากที่ล้มเหลว แต่มีวิธีการเปลี่ยนสำหรับกระบวนการทำงานจากบรรทัดคำสั่งหรือไม่
ฉันมีกระบวนการทำงานที่ยาวนานซึ่งในที่สุดจะถึงขีด จำกัด ไฟล์สูงสุดที่เปิด ฉันรู้วิธีการเปลี่ยนหลังจากที่ล้มเหลว แต่มีวิธีการเปลี่ยนสำหรับกระบวนการทำงานจากบรรทัดคำสั่งหรือไม่
คำตอบ:
ในเมล็ดที่ใหม่กว่า (2.6.32+) บน CentOS / RHEL คุณสามารถเปลี่ยนได้ที่รันไทม์ด้วย / proc / <pid> / ข้อ จำกัด :
cd /proc/7671/
[root@host 7671]# cat limits | grep nice
Max nice priority 0 0
[root@host 7671]# echo -n "Max nice priority=5:6" > limits
[root@host 7671]# cat limits | grep nice
Max nice priority 5 6
เป็นเอกสารที่นี่ที่prlimit
คำสั่งนำมาใช้กับ util ลินุกซ์ 2.21 ช่วยให้คุณอ่านและเปลี่ยนข้อ จำกัด ของกระบวนการการทำงานของ
นี่คือการติดตามการเขียน/proc/<pid>/limits
ซึ่งไม่ได้รวมอยู่ในเคอร์เนลการฉีด วิธีนี้ควรใช้งานได้ดี
หากคุณไม่ได้มีprlimit(1)
แต่คุณสามารถค้นหารหัสไปเป็นรุ่นที่เรียบง่ายในmanpageprlimit(2)
ใน util-linux-ng เวอร์ชั่นใหม่กว่านี้คุณสามารถใช้คำสั่ง prlimit สำหรับข้อมูลเพิ่มเติมอ่านลิงค์นี้https://superuser.com/questions/404239/setting-ulimit-on-a-running-process
คุณสามารถลอง ulimit man ulimit
ด้วยตัวเลือก -n แต่หน้า mag ไม่ใช่ระบบปฏิบัติการส่วนใหญ่ไม่อนุญาตให้ตั้งค่านี้
คุณสามารถตั้งค่าขีด จำกัด รายละเอียดไฟล์ทั้งระบบโดยใช้sysctl -w fs.file-max=N
และทำการเปลี่ยนแปลงยังคงมีอยู่หลังการบูทระบบ/etc/sysctl.conf
อย่างไรก็ตามฉันขอแนะนำให้ดูที่กระบวนการเพื่อดูว่าจำเป็นต้องมีไฟล์จำนวนมากที่เปิดในเวลาที่กำหนดหรือไม่และถ้าคุณสามารถปิดบางไฟล์ลงและมีประสิทธิภาพมากขึ้นในกระบวนการ
ulimit
ไม่สามารถใช้การตั้งค่าเพื่อกระบวนการทำงาน
กระบวนการสามารถเปลี่ยนขีด จำกัด ซอฟต์ของตัวเองได้หากโปรแกรมถูกตั้งค่าให้ทำ (หรือถ้าคุณจัดการแฮ็คมัน) แต่ก็ไม่สามารถเพิ่มขีด จำกัด ฮาร์ดได้เว้นแต่จะมีความสามารถ CAP_SYS_RESOURCE คุณสามารถตรวจสอบข้อ จำกัด /proc/$pid/limits
ที่รันไทม์ใน