.png)
핵심번호를 스크립트에서 사용하고 싶은데 번호 자체를 추출하는 것이 가장 좋은 방법이 무엇인지 모르겠습니다.
예를 들어 아래에는 물리적 코어 개수가 추출되는데, 실제 코어 개수를 어떻게 추출해야 다른 곳에 입력으로 사용할 수 있을까요?
lscpu | grep "Core(s) per socket"
Core(s) per socket: 4
tail -c N에 대해 알고 있지만 더 많은 코어가 있는 시스템에서 작업할 때 이 접근 방식이 취약할 수 있다는 점이 걱정됩니다.
다른 곳에서 입력 매개변수로 사용할 물리적 코어 수와 코어당 스레드 수를 안정적으로 얻는 가장 좋은 방법은 무엇입니까?
답변1
행에서 숫자를 선택하기 위해 Perl 정규 표현식을 awk
사용할 수 있습니다 sed
.grep
$ lscpu | sed -n 's/^Core(s) per socket: *//p'
2
그런데 그 번호를 원하시나요? 소켓의 코어 수는 무엇입니까? 컴퓨터에 소켓이 여러 개 있는 경우 수행할 작업:
$ lscpu |grep -i socket
Core(s) per socket: 2
Socket(s): 2
이를 사용하여 awk
두 숫자를 취하고 곱할 수 있습니다.
$ lscpu | awk '/^Core.s. per socket:/ {cores=$NF} /^Socket.s.:/ {sockets=$NF} END {print cores * sockets}'
4
이것이 하이퍼스레딩으로 간주되는지, 하이퍼스레딩이 필요한지 확실하지 않지만 숫자를 직접 얻을 수 있습니다 CPU(s)
.
lscpu | awk '/^CPU.s.:/ { print $NF; exit }'
또는 사용nproc
시스템의 총 CPU 수를 가져옵니다.
$ nproc --all
4
답변2
getconf
이를 위해 유틸리티를 사용할 수 있습니다 . 이것은 당신에게 도움이 될 것입니다
$ getconf _NPROCESSORS_ONLN
8