fork: thử lại: Tài nguyên tạm thời không có


31

Trong khi tôi đang kết nối với máy chủ của mình, tôi nhận được,

-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

Và tôi cũng thử làm theo các lệnh, sau đó kết quả là như nhau.

-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$ 

Tại sao điều này đến? Và làm thế nào tôi có thể giải quyết nó?


2
Có vẻ như trao đổi bị quá tải (hệ thống tập tin / tmp có thể đầy đủ)
Lambert

2
ulimit -a, có thể bạn đạt một số giới hạn quy trình
c4f4t0r

Câu trả lời:


20

Điều này có thể là do một số giới hạn tài nguyên, trên chính máy chủ (hoặc) dành riêng cho tài khoản người dùng của bạn. Giới hạn trong vỏ của bạn có thể được kiểm tra thông qua ulimit -a. Kiểm tra Esp cho ulimit -ucác quy trình người dùng tối đa, nếu bạn đã đạt đến các quy trình tối đa, fork không thể tạo bất kỳ mới và không thành công với lỗi đó. Điều này cũng có thể là do vấn đề trao đổi / tài nguyên bộ nhớ


9

ngã ba: Tài nguyên tạm thời không có

Lỗi có nghĩa là tài nguyên shell hiện tại bị giới hạn (kiểm tra giới hạn theo ulimit -a). Vì vậy, bạn có thể thử trong shell khác hoặc tăng tài nguyên bằng cách sử dụng ulimitlệnh kiểm soát các tài nguyên có sẵn cho shell và xử lý nó tạo trên hệ điều hành.

Để tăng giới hạn, hãy thử chạy:

ulimit -Sn unlimited && ulimit -Sl unlimited

nâng giới hạn mềm lên cứng, hoặc:

ulimit -l unlimited
ulimit -n 10240 

để đặt kích thước tối đa một quy trình thành không giới hạn và số lượng tệp mở tối đa là 10240.

Xem: help ulimitđể biết thêm thông tin.

Để làm cho nó bền bỉ, hãy thêm các cài đặt ở trên vào các tệp RC khởi động của bạn (ví dụ ~/.bashrc).


Bạn cũng có thể sử dụng /etc/sysctl.conf(xem: man sysctl.conf) để tăng giới hạn kernel, vd

kern.maxprocperuid=1000
kern.maxproc=2000

1
Khi lỗi này xảy ra, "thử lại" có nghĩa là nó sẽ cố gắng lặp đi lặp lại cho đến khi tài nguyên có sẵn không?
DaveTheMinion

@DavidB Hoặc nó đã thử lại, nhưng không thành công.
Kusalananda

@Kusalananda Được rồi cảm ơn bạn.
DaveTheMinion

0

Vấn đề cũng có thể được giải quyết bằng các lệnh sau:

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

Ở đây user1 là nhóm người dùng đã vượt quá giới hạn


Giết chết mọi quy trình thuộc về người dùng có vẻ hơi nặng tay. Ngoài ra, yumlệnh đó có lẽ cũng không thể rẽ nhánh.
Kusalananda

Lệnh yum sẽ được chạy qua người dùng root, giả sử rằng sự cố đã xảy ra với người dùng khác với root
Arun

Nếu shell không rẽ nhánh, dfnó cũng có vấn đề khi chạy sudo.
Kusalananda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.