Làm cách nào để truy cập tên của bản phân phối trên dòng lệnh?


12

Tôi có một số distro tôi đang chơi với. Tôi dán nhãn thẻ SD, nhưng:

  1. Họ đang lộn ngược
  2. Tôi thường ở trong một phòng khác từ RPi

Tôi đã thiết lập một dịch vụ trong init.d cho phép tôi biết qua Pushover khi Pi của tôi đang tắt hoặc khởi động (sử dụng API qua curl).

Tôi muốn điều này bao gồm phân phối mà tôi hiện đang sử dụng.

Tôi có thể thấy trên đôi giày mới nhất của mình (chơi với adafbean Raspbian):

Linux raspberrypi 3.1.9adafruit+ #8 PREEMPT Wed Aug 1 18:02:42 EDT 2012 armv6l

Làm thế nào tôi có thể lấy thông tin đó để đưa vào kịch bản của mình?

Tôi đã cài đặt lsb-phát hành, nhưng điều đó chỉ mang lại cho tôi điều này:

pi@raspberrypi / $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux testing/unstable
Release:    testing/unstable
Codename:   n/a

Mà sẽ trông giống như Raspbian thường xuyên của tôi.

Ngoài ra, tôi có thể muốn chỉ ra điều gì đó về bản thân cụ thể trên thẻ SD (vì có lẽ tôi sẽ có nhiều bản phân phối cơ sở giống nhau). Rõ ràng, tôi chỉ có thể thả một tệp vào cùng một vị trí trên mỗi thẻ SD, nhưng có một quy ước về nơi để đặt loại thông tin đó không?


Thật tuyệt. Bạn có thể chỉ ra làm thế nào bạn kết hợp được điều đó với initover / init.d không? Tôi sẽ hỏi một câu hỏi nếu bạn trả lời nó :)
Zlatko

@zladuric Đăng ký tại Pushover.net để có tài khoản. API curl khá đơn giản. Tôi đã thiết lập một tập lệnh đơn giản trong init.d dưới dạng "dịch vụ" và nó chỉ đơn giản gửi các thông báo khác nhau khi bắt đầu / dừng. Về mặt kỹ thuật, đây là thông báo dừng bắt đầu, vì vậy nếu có thông báo "bắt đầu", nó sẽ gửi thông báo. Trong thực tế, không có gì bắt đầu hoặc dừng chúng ngoại trừ khởi động và tắt máy. Nếu bạn muốn mã đầy đủ, hãy tiếp tục và gửi một câu hỏi.
Cade Roux

Câu trả lời:


8
$ uname -a
Linux raspberrypi 3.1.9+ #174 PREEMPT Sun Jul 22 19:04:28 BST 2012 armv6l GNU/Linux

7

Thử

cat /etc/*-release

Trên máy tính để bàn của tôi, nó cung cấp cho

NAME="Arch Linux"
ID=arch
PRETTY_NAME="Arch Linux"
ANSI_COLOR="0;36"
HOME_URL="https://www.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"

Đã kiểm tra các hình ảnh Raspberry Pi chính thức (Raspbian và Arch), /etc/os-releasecó sẵn trên cả hai và chứa ít nhất các thuộc tính NAME và PRETTY_NAME.

Làm cách nào để trích xuất tên của bản phân phối?

Điều đó khá đơn giản, hãy thử

$ cat /etc/os-release | perl -n -e '/^NAME=\"([a-zA-Z ]*)\"$/ && print "$1\n"'
Arch Linux

Người giới thiệu

  1. Cách thực hiện: Tìm hiểu tên và phiên bản phân phối Linux của tôi

Có vẻ tốt. Cuối cùng, nó không thành vấn đề nếu điều này thực sự phổ biến, miễn là nó hoạt động cho các bản phát hành được đề cập. Và thật dễ dàng để đặt tệp riêng của một người vào hệ thống tệp nếu thử nghiệm với tệp không có tệp theo mặc định.
Chris Stratton

4

Như đã chỉ ra, bạn có thể sử dụng uname, nhưng điều này sẽ chỉ hiển thị phiên bản kernel. Nếu bạn có cùng một phiên bản kernel trên một vài bản phân phối / thẻ khác nhau (rất có thể vì một vài trong số chúng đang sử dụng cùng một kernel kernel), bạn sẽ nhận được kết quả tương tự cho mỗi trong số chúng. Vì vậy, cách tốt nhất để phân biệt giữa các distro là sử dụng thứ gì đó không phải kernel. Không có cách phổ quát tuy nhiên. Một cách dễ dàng là sử dụng tên máy chủ (và thay đổi tên cho mỗi bản phân phối).

cat / Proc / phiên bản / Proc / sys / kernel / tên máy chủ

hoặc là

tên máy chủ && uname -a


mèo / Proc / phiên bản / Proc / sys / kernel / tên máy chủ
Krzysztof Adamski

tên máy chủ && uname -a (giả sử tên máy chủ hoạt động - pi không được khởi động để kiểm tra tại thời điểm này)
Chris Stratton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.