포크: 재시도: 리소스를 일시적으로 사용할 수 없습니다.

포크: 재시도: 리소스를 일시적으로 사용할 수 없습니다.

내 서버에 연결하면 다음과 같은 결과가 나타납니다.

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

왜 오나요? 어떻게 해결할 수 있나요?

답변1

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

답변2

포크: 리소스를 일시적으로 사용할 수 없습니다.

이 오류는 현재 셸 리소스가 제한되어 있음을 나타냅니다( 제한 확인 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

답변3

dmesg당신의 친구입니다. 이 명령을 실행하여 시스템이 무언가를 차단하는 이유를 확인하세요.

systemd 기반 시스템의 경우 사용자 제한도 있습니다. 다음 명령을 사용하여 한도를 확인할 수 있습니다.

systemctl status user-1000.slice
systemctl cat user-1000.slice

1000은 담당 사용자, 즉 로그인하려는 사용자의 PID입니다.

자세한 내용은 다음 페이지를 확인하세요. 여기에서 특정 또는 모든 사용자에 대한 제한을 변경하거나 변경하는 방법을 알아볼 수 있습니다.

https://www.suse.com/support/kb/doc/?id=000019044

답변4

이 문제는 다음 명령을 사용하여 해결할 수도 있습니다.

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

여기서 user1은 제한을 초과한 사용자 그룹입니다.

관련 정보