ฉันทดสอบสิ่งนี้ในการติดตั้ง GNU / Linux อื่น:
perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'
ระบบ A และ D
ขีด จำกัด แรกที่ฉันตีคือ 1024 มันสามารถยกได้ง่ายโดยใส่สิ่งนี้ลงใน /etc/security/limits.conf:
* hard nofile 1048576
จากนั้นเรียกใช้:
ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max
ตอนนี้การทดสอบไปที่ 1048576
อย่างไรก็ตามดูเหมือนว่าฉันไม่สามารถยกระดับได้เหนือ 1048576 ถ้าฉันใส่ 1048577 ใน limit.conf มันก็จะถูกละเว้น
อะไรทำให้เกิดสิ่งนั้น
ระบบ B
บนระบบ BI ไม่สามารถไปถึง 1048576:
echo 99999999 | sudo tee /proc/sys/fs/file-max
/etc/security/limits.conf:
* hard nofile 1048576
ที่นี่ฉันได้รับ:
$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK
ขีด จำกัด นั้นมาจากไหน
ระบบ C
ระบบนี้มีขีด จำกัด 1048576 ใน limit.conf และ 99999999 ใน / proc / sys / fs / file-max
แต่ที่นี่ขีด จำกัด คือ 4096:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK
ฉันจะยกระดับดังกล่าวเป็น (อย่างน้อย) 1048576 ได้อย่างไร
(หมายเหตุตนเอง: อย่าทำ: echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max
)