bash 파일 크기 제한이 초과되었습니다. [닫기]

bash 파일 크기 제한이 초과되었습니다. [닫기]

저는 SUSE 10 서버, 커널 2.6.16.60, ext3 파일 시스템에서 이 쉘 스크립트를 사용해 보았습니다.

스크립트에는 다음 줄이 있습니다.

cat file | awk '{print $1" "$2" "$3}' | sort -n > result

파일 크기는 약 3.2G이며 다음과 같은 오류 메시지가 나타납니다 File size limit exceeded.

이 셸에는 ulimit -f제한이 없습니다.

스크립트를 다음과 같이 변경한 후:

cat file | awk '{print $1" "$2" "$3}' >tmp
sort -n tmp > result

문제가 해결되었습니다.

왜 그런지는 모르겠지만 누가 나한테 설명해 줄 수 있나요?

답변1

바라보다서버 오류로 인한 중복 문제:

파이프라인 버전에는 더 많은 임시 파일이 필요합니다. 다음 명령어를 사용하면 빠르게 확인할 수 있습니다.스트레스유용.

파이프라인 버전은 빠르게 증가하는 임시 파일 수를 사용합니다.

for i in {1..200000} ; do echo $i ; done |strace sort -n |& grep -e 'open.*/tmp/'
open("/tmp/sortb9Mhqd", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
open("/tmp/sortqKOVvG", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
open("/tmp/sortb9Mhqd", O_RDONLY)       = 3
open("/tmp/sortqKOVvG", O_RDONLY)       = 4

파일 버전은 동일한 데이터 세트에 대해 임시 파일을 사용하지 않습니다. 더 큰 데이터 세트의 경우 최소한의 임시 파일을 사용합니다.

for i in {1..200000} ; do echo $i ; done >/tmp/TESTDATA ; strace sort -n /TMP/TESTDATA |& grep -e 'open.*/tmp/'

관련 정보