내 서버에 연결하는 동안
-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$
왜 이런 일이 발생합니까? 어떻게 해결할 수 있나요?
댓글
- 스왑이 과부하 된 것 같습니다 (/ tmp 파일 시스템이 가득 찼을 수 있음)
- ulimit -a, 일부 프로세스 제한에 도달했을 수 있습니다.
답변
이것은 리소스 제한 때문일 수 있습니다. 서버 자체 (또는) 사용자 계정에 고유합니다. 셸의 제한은 ulimit -a
를 통해 확인할 수 있습니다. Esp는 ulimit -u
최대 사용자 프로세스를 확인합니다. 최대 프로세스에 도달 한 경우 포크는 새 프로세스를 만들 수 없으며 해당 오류로 실패합니다. 스왑 / 메모리 리소스 문제 일 수도 있습니다.
답변
포크 : 리소스를 일시적으로 사용할 수 없음
오류는 현재 셸 리소스가 제한되어 있음을 의미합니다 (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
댓글
- 이 오류가 발생하면 " retry "는 res까지 반복적으로 시도 함을 의미합니다. 우리를 사용할 수있게 되었습니까?
- @DavidB 또는 재시도 했지만 실패했습니다.
- kern.maxprocperuid, kern.maxproc, kernel.maxprocperuid 및 kernel. maxproc은 Ubuntu에 존재하지 않습니다. 대안은 무엇입니까?
답변
다음 명령을 사용하여 문제를 해결할 수도 있습니다.
yum install psmisc killall -STOP -u user1 killall -KILL -u user1
여기 user1은 한도를 초과 한 사용자 그룹입니다.
댓글
- 사용자에게 속한 모든 단일 프로세스를 죽이는 것은 약간의 손길로 보입니다. 또한 해당
yum
명령도 포크 할 수 없습니다. - yum 명령은 루트 사용자를 통해 실행되며 다른 서버에서 문제가 발생했다고 가정합니다. 루트보다 사용자
- 셸이
df
를 포크하지 못하면sudo
도 실행하는 데 문제가 있습니다. - BOFH 스타일. 좋아요!