Tôi có thể tìm số sê-ri của Raspberry Pi hiện đang sử dụng ở đâu?
Tôi có thể tìm số sê-ri của Raspberry Pi hiện đang sử dụng ở đâu?
Câu trả lời:
Số sê-ri có thể được tìm thấy trong /proc/cpuinfo
; ví dụ,
pi@raspberrypi:~$ cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 697.95
Features : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : BCM2708
Revision : 1000002
Serial : 000000000000000d
Bạn có thể sử dụng đường ống bash rất cơ bản
cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2
Vì các tab được sử dụng ở phía bên trái của dấu hai chấm, nên việc cắt ký tự khoảng trắng sẽ chỉ bắt được số sê-ri một cách đáng tin cậy.
Các phiên bản trước của câu trả lời này cắt trên dấu hai chấm, tạo ra một không gian hàng đầu trong biến. Không gian hàng đầu đó không bị xóa trong khi gán biến như đã đề xuất trước đây.
Trong Bash, rất đơn giản để trích xuất ... bằng cách sử dụng Perl. Sử dụng
cat /proc/cpuinfo | perl -n -e '/^Serial\s*:\s([0-9a-f]{16})$/ && print "$1\n"'
Ví dụ,
$ cat /proc/cpuinfo | perl -n -e '/^Serial\s*:\s([0-9a-f]{16})$/ && print "$1\n"'
000000000000000d
Raspberry Spy cung cấp một ví dụ Python rất hữu ích.
def getserial():
# Extract serial from cpuinfo file
cpuserial = "0000000000000000"
try:
f = open('/proc/cpuinfo','r')
for line in f:
if line[0:6]=='Serial':
cpuserial = line[10:26]
f.close()
except:
cpuserial = "ERROR000000000"
return cpuserial
cat
.
Sử dụng grep
:
grep -Po '^Serial\s*:\s*\K[[:xdigit:]]{16}' /proc/cpuinfo
Sử dụng Bash thuần túy mà không sử dụng bất kỳ tiện ích bên ngoài nào:
pattern='^Serial.*([[:xdigit:]]{16})$'
while read -r line
do
if [[ $line =~ $pattern ]]
then
echo "${BASH_REMATCH[1]}"
fi
done < /proc/cpuinfo
Đầu ra của một trong hai ở trên là như nhau.
-P
(Perl regex) là một lựa chọn của các phiên bản hiện đại của GNU grep
.
Đối với bất kỳ ai quan tâm ở đây là một cách để có được Số sê-ri Raspberry bằng NodeJS:
function getserial(){
var fs = require('fs');
var content = fs.readFileSync('/proc/cpuinfo', 'utf8');
var cont_array = content.split("\n");
var serial_line = cont_array[cont_array.length-2];
var serial = serial_line.split(":");
return serial[1].slice(1);
}
grep -i serial /proc/cpuinfo | cut -d : -f2
Câu hỏi ngắn nhất và đơn giản nhất chưa được cung cấp như một câu trả lời. Điều này, trong sed:
sed -n '/^Serial/{s/.* //;p}' /proc/cpuinfo
Ý nghĩa:
sed -n
- chạy trình chỉnh sửa luồng mà không in mỗi dòng/^Serial/
- chỉ khớp các dòng bắt đầu bằng từ Sê-ri Nối tiếps/.* //;
- thay thế mọi thứ cho đến khi không gian cuối cùng không có gì (sed regexes là tham lam , btw)p
- in kết quả.sed đôi khi có một tên xấu là khó sử dụng và khó hiểu, nhưng nó có sẵn và hoạt động theo cùng một cách (miễn là bạn tuân theo các quy ước POSIX) trên nhiều loại Linux và Unix.
sed -n 's/^Serial\s*: 0*//p' /proc/cpuinfo
Đúng. Quả thực đây là cách để có được nó.
Thật buồn cười khi Pi0 của tôi có cùng dữ liệu (nối tiếp) như ví dụ trên. Không có sự khác biệt giữa sê-ri PI0 của tôi và cái được đăng bởi Alex Chamberlain
Đối với PI3 yo có 4 procesors
#cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 1
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 2
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 3
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
Hardware : BCM2709
Revision : a02082
Serial : 000000003d1d1c36