fork: ลองอีกครั้ง: ทรัพยากรไม่สามารถใช้งานได้ชั่วคราว


31

ขณะที่ฉันเชื่อมต่อกับเซิร์ฟเวอร์ฉันจะได้รับ

-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

และฉันลองทำตามคำสั่งแล้วผลลัพธ์ก็เหมือนกัน

-bash-4.1$ df -h
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 
-bash-4.1$ ls -lrth
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Interrupted system call
-bash-4.1$ 
-bash-4.1$ ps -aef | grep `pwd`
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 

ทำไมถึงต้องมา? และฉันจะแก้ไขมันได้อย่างไร


2
ดูเหมือนว่าการแลกเปลี่ยนการโอเวอร์โหลด (tmp / ระบบแฟ้มอาจจะเต็ม)
แลมเบิร์

2
สวัสดี, คุณอาจจะถึงขีด จำกัด กระบวนการ
c4f4t0r

คำตอบ:


20

อาจเกิดจากการ จำกัด ทรัพยากรบางอย่างไม่ว่าจะบนเซิร์ฟเวอร์ (หรือ) เฉพาะบัญชีผู้ใช้ของคุณ ข้อ จำกัด ulimit -aในเปลือกของคุณอาจจะมีการตรวจสอบผ่าน การตรวจสอบ Esp สำหรับulimit -uกระบวนการผู้ใช้สูงสุดถ้าคุณได้ทำถึงกระบวนการสูงสุดแล้ว fork จะไม่สามารถสร้างกระบวนการใหม่และล้มเหลวด้วยข้อผิดพลาดนั้น นี่อาจเป็นเพราะปัญหาทรัพยากร swap / memory


9

fork: ทรัพยากรไม่สามารถใช้งานได้ชั่วคราว

ข้อผิดพลาดหมายความว่าทรัพยากรเชลล์ปัจจุบันมี จำกัด (ตรวจสอบข้อ จำกัด ตามulimit -a) ดังนั้นคุณสามารถลองในเชลล์อื่นหรือเพิ่มทรัพยากรโดยใช้ulimitคำสั่งที่ควบคุมทรัพยากรที่มีให้กับเชลล์และกระบวนการที่สร้างบนระบบปฏิบัติการ

หากต้องการเพิ่มขีด จำกัด ให้ลองเรียกใช้:

ulimit -Sn unlimited && ulimit -Sl unlimited

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

ulimit -l unlimited
ulimit -n 10240 

เพื่อตั้งค่าขนาดสูงสุดของกระบวนการเป็นไม่ จำกัด และจำนวนไฟล์สูงสุดที่เปิดเป็น 10240

ดู: help ulimitสำหรับข้อมูลเพิ่มเติม

ในการทำให้ถาวรให้เพิ่มการตั้งค่าข้างต้นลงในไฟล์rcเริ่มต้นของคุณ(เช่น~/.bashrc)


คุณยังสามารถใช้/etc/sysctl.conf(ดู: ผู้ชายsysctl.conf) เพื่อเพิ่มขีด จำกัด เคอร์เนลเช่น

kern.maxprocperuid=1000
kern.maxproc=2000

1
เมื่อข้อผิดพลาดนี้เกิดขึ้น "ลองใหม่" หมายความว่าจะพยายามซ้ำ ๆ จนกว่าทรัพยากรจะพร้อมใช้งานหรือไม่
DaveTheMinion

@DavidB หรือว่ามันไม่ได้ลองใหม่อีกครั้ง แต่ล้มเหลว
Kusalananda

@ Kusalananda โอเคขอบคุณ
DaveTheMinion

0

ปัญหาสามารถแก้ไขได้โดยใช้คำสั่งต่อไปนี้:

yum install psmisc
killall -STOP -u user1
killall -KILL -u user1

ที่นี่ user1 เป็นกลุ่มผู้ใช้ที่เกินขีด จำกัด แล้ว


การฆ่าทุกขั้นตอนเป็นของผู้ใช้ดูเหมือนว่าจะได้รับการยกมือขึ้นเล็กน้อย นอกจากนี้yumคำสั่งนั้นอาจไม่สามารถแยกได้เช่นกัน
Kusalananda

คำสั่ง yum จะถูกเรียกใช้ผ่านผู้ใช้รูทโดยสมมติว่าปัญหาเกิดขึ้นกับผู้ใช้ที่แตกต่างจากรูท
Arun

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