ulimit PICKLE:“ ไม่อนุญาตให้ใช้งาน” และ“ ไม่พบคำสั่ง”


15

ฉันพยายามเพิ่มจำนวนไฟล์ที่เปิดสูงสุดสำหรับผู้ใช้ปัจจุบัน

> ulimit -n
1024

ฉันพยายามเพิ่มและล้มเหลวดังนี้

> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted

ดังนั้นฉันจึงทำสิ่งที่เป็นธรรมชาติและพยายามเรียกใช้โดยได้รับอนุญาตจาก temp แต่ล้มเหลว

> sudo ulimit -n 4096
sudo: ulimit: command not found

คำถาม

  1. วิธีเพิ่ม ulimit?
  2. ทำไมสิ่งนี้จึงเกิดขึ้น

ใช้ Fedora 14


ตอบกลับไปที่ความคิดเห็นที่ถูกลบ: ulimit 4096ไม่ทำงาน ฉันคิดว่า-nถูกต้อง เพื่อเป็นการพิสูจน์แนวคิดมันใช้งานได้ถ้าฉันเป็นครั้งแรกsudo su - root(แต่จะเปลี่ยนเฉพาะรูท)
paislee


คำตอบ:


17

ulimitเป็นเชลล์ในตัวไม่ใช่คำสั่งภายนอก มันจะต้องสร้างขึ้นภายในเพราะมันทำหน้าที่ในกระบวนการเชลล์ตัวเองเช่นcd: ข้อ จำกัด เช่นไดเรกทอรีปัจจุบันเป็นคุณสมบัติของกระบวนการเฉพาะที่

sudo bash -c 'ulimit -n 4096'จะใช้งานได้ แต่จะเปลี่ยนขีด จำกัด สำหรับกระบวนการทุบตีที่เรียกใช้โดยsudoเท่านั้นซึ่งจะไม่ช่วยคุณ

มีสองค่าสำหรับแต่ละขีด จำกัด : ฮาร์ด จำกัด และซอฟต์ จำกัด เฉพาะ root เท่านั้นที่สามารถเพิ่มขีด จำกัด ได้ยาก ทุกคนสามารถลดขีด จำกัด ฮาร์ดและ จำกัด นุ่มสามารถแก้ไขในทิศทางใดทิศทางหนึ่งด้วยข้อ จำกัด เพียงอย่างเดียวที่ไม่สามารถสูงกว่าขีด จำกัด ฮาร์ด soft limit เป็นค่าจริงที่สำคัญ

ดังนั้นคุณต้องจัดการว่ากระบวนการทั้งหมดของคุณมีขีด จำกัด ที่ยากสำหรับไฟล์ที่เปิดอย่างน้อย 4096 คุณสามารถเก็บ soft limit ไว้ที่ 1024 ก่อนเปิดตัวกระบวนการที่ต้องใช้ไฟล์จำนวนมากให้เพิ่ม soft limit ใน/etc/security/limits.confเพิ่มบรรทัด

paislee hard nofile 4096
paislee soft nofile 1024

ที่paisleeชื่อของผู้ใช้ที่คุณต้องการเรียกใช้กระบวนการของคุณเป็น ในเชลล์ที่เปิดใช้งานกระบวนการที่คุณต้องการขีด จำกัด ที่สูงกว่าให้รัน

ulimit -Sn unlimited

เพื่อเพิ่มขีด จำกัด ซอฟท์เป็นขีด จำกัด ฮาร์ด


1
ทางเลือกที่sudo bash -cจะsudo -iเริ่มต้นเปลือกเข้าสู่ระบบและsudo -swhcih เริ่มเปลือก ใช้ข้อ จำกัด เดียวกัน แต่อาจมีประโยชน์ในกรณีอื่น ๆ
Bram

ขอบคุณ ฉันขอถามคำถามที่เกี่ยวข้องได้ไหม คำตอบอื่น ๆ และโพสต์stackoverflow.com/a/17483998/156458และunix.stackexchange.com/a/238413/674และunix.stackexchange.com/a/169035/674sudo sh -c "ulimit -c 1024 && exec su $LOGNAME"ทั้งหมดแนะนำให้ใช้ แต่ทั้งสองulimit -c 1024และexec su $LOGNAME" มีผลเฉพาะกับเปลือกที่สร้างขึ้นโดยsudoดังนั้นสิ่งที่เป็นวัตถุประสงค์ของคำสั่งหรือไม่ exec su $LOGNAME"ยังไม่ได้ทำอะไรที่มีความหมายเพื่อใช้ประโยชน์จากขีด จำกัด ที่เปลี่ยนแปลง ฉันสับสนมากและสงสัยว่าฉันขาดอะไร
ทิม

โปรดทราบว่าulimit -Sn unlimitedไม่สามารถใช้งานกับเชลล์ส่วนใหญ่ได้ วิธีการที่ถูกต้องคือการโทรulimit -aแล้วโทรหาulimit -n <number>ที่ <number คือ hard limit (คอลัมน์ด้านขวา)
schily

3

เปิดไฟล์และเพิ่มบรรทัด/etc/security/limits.conf <user> soft nofile <value>สำหรับการใช้ulimitการเปลี่ยนเป็นผู้ใช้รูทและลองเหมือนกัน

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