포크 : 재시도 : 리소스를 일시적으로 사용할 수 없음


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 파일 시스템이 가득 찼습니다)
Lambert

2
ulimit -a, 프로세스 제한에 도달했을 수 있습니다
c4f4t0r

답변:


20

서버 자체 (또는 사용자 계정)에 따라 일부 리소스 제한으로 인해 발생할 수 있습니다. 쉘의 한계는을 통해 확인할 수 있습니다 ulimit -a. Esp ulimit -u최대 사용자 프로세스 확인 , 최대 프로세스에 도달하면 포크는 새 오류를 생성 할 수 없으며 해당 오류로 실패합니다. 스왑 / 메모리 리소스 문제로 인한 것일 수도 있습니다.


9

포크 : 리소스를 일시적으로 사용할 수 없음

이 오류는 현재 쉘 자원이 제한됨을 의미합니다 (로 한계를 확인하십시오 ulimit -a). 따라서 다른 쉘에서 시도하거나 쉘에 사용 ulimit가능한 자원 및 운영 체제에서 작성하는 프로세스를 제어 하는 명령을 사용하여 자원을 늘릴 수 있습니다.

한계를 늘리려면 다음을 실행하십시오.

ulimit -Sn unlimited && ulimit -Sl unlimited

소프트 한계를 어려운 것으로 늘리거나

ulimit -l unlimited
ulimit -n 10240 

프로세스의 최대 크기를 무제한으로 설정하고 열린 파일의 최대 수를 10240으로 설정합니다.

자세한 내용은 다음 help ulimit을 참조하십시오.

지속적으로 유지하려면 위의 설정을 시작 rc 파일 (예 :)에 추가하십시오 ~/.bashrc.


커널 제한을 늘리기 위해 /etc/sysctl.conf(man 참조 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

냠 명령은 문제가 루트가 아닌 다른 사용자에 발생했다고 가정하고, 루트 사용자를 통해 실행됩니다
아룬

쉘이 포크에 실패하면 df실행 sudo중에도 문제가 발생합니다 .
Kusalananda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.