스크립트 오류 "포크: 재시도: 리소스를 일시적으로 사용할 수 없습니다".. 실패한 라인을 재시도합니까?

스크립트 오류 "포크: 재시도: 리소스를 일시적으로 사용할 수 없습니다".. 실패한 라인을 재시도합니까?

백그라운드 ping 호출을 수행하는 ping 스크립트를 실행 중입니다.

#!/bin/bash for ip in $(seq 100 210); do ping x.x.x.$ip -c1 |grep "bytes from" |cut -d " " -f4|cut -d ":" -f1 & done fork: retry: Resource temporarily unavailable루프 반복 중에 오류가 발생하면 해당 반복이 되돌릴 수 없게 실패합니까, 아니면 리소스를 사용할 수 있게 되면 스크립트가 자동으로 다시 실행을 시도합니까?

답변1

운영 체제는 실패한 명령을 자체적으로 다시 시작할 수 없습니다. 그러나 이러한 메커니즘을 스크립트에 구축할 수 있습니다. 포크가 실패하면 -1이 반환되고 하위 프로세스가 생성되지 않습니다. 위와 같은 오류가 발생하는 이유는 다음과 같습니다.이가온. 리소스 제한(ulimit 및 메모리)을 확인하세요. 아래 매뉴얼 페이지의 관련 섹션 -

RETURN VALUE
        On  success,  the  PID  of the child process is returned in  the parent, 
and 0 is returned in the child.  On failure, -1 is returned in
 the parent, no child process is created, and errno is set appropriately.

EAGAIN fork() cannot allocate sufficient memory to copy the parent's page tables and 
allocate a task structure for the child.

EAGAIN It was not possible to create a new process because the caller's RLIMIT_NPROC 
resource limit was  encountered.   To  exceed  this  limit,  the
process must have either the CAP_SYS_ADMIN or the CAP_SYS_RESOURCE capability.

관련 정보