bash
스크립트 에서는 /proc/
파일의 다양한 값이 필요 합니다. 지금까지 수십 줄이 파일을 직접 그 리핑했습니다.
grep -oP '^MemFree: *\K[0-9]+' /proc/meminfo
보다 효율적으로 만들기 위해 파일 내용을 변수에 저장하고 다음과 같이 정리했습니다.
a=$(</proc/meminfo)
echo "$a" | grep -oP '^MemFree: *\K[0-9]+'
파일을 여러 번 여는 대신 파일을 한 번 열고 변수 내용을 grep해야합니다. 더 빠르다고 가정했지만 실제로는 느립니다.
bash 4.4.19 $ time for i in {1..1000};do grep ^MemFree /proc/meminfo;done >/dev/null
real 0m0.803s
user 0m0.619s
sys 0m0.232s
bash 4.4.19 $ a=$(</proc/meminfo)
bash 4.4.19 $ time for i in {1..1000};do echo "$a"|grep ^MemFree; done >/dev/null
real 0m1.182s
user 0m1.425s
sys 0m0.506s
dash
및에 대해서도 마찬가지입니다 zsh
. 나는 /proc/
파일 의 특수 상태를 이유로 의심 했지만 내용을 /proc/meminfo
일반 파일에 복사 하고 결과가 동일하다는 것을 사용할 때 :
bash 4.4.19 $ cat </proc/meminfo >meminfo
bash 4.4.19 $ time for i in $(seq 1 1000);do grep ^MemFree meminfo; done >/dev/null
real 0m0.790s
user 0m0.608s
sys 0m0.227s
here 문자열을 사용하여 파이프를 저장하면 파일보다 약간 빠르지 만 여전히 빠릅니다.
bash 4.4.19 $ time for i in $(seq 1 1000);do <<<"$a" grep ^MemFree; done >/dev/null
real 0m0.977s
user 0m0.758s
sys 0m0.268s
변수에서 같은 내용을 읽는 것보다 파일을 여는 것이 왜 더 빠릅니까?
/proc/
이유로 파일을,하지만 난의 내용을 복사 할 때 /proc/meminfo
일반 파일 및 사용에 결과가 동일한 지는"그것은이다 없는 특별한 /proc/
일반 파일을 읽는 것도 빠릅니다!