Tôi giả sử bạn có Raspberry bằng raspian, theo hiểu biết tốt nhất của tôi, vẫn chưa chuyển sang systemd . Trong trường hợp này, câu trả lời như sau.
EDIT: cho systemd (Jessie trở lên), xem ở phía dưới .
Đầu tiên, bạn có thể xác định hệ thống nào hiện đang chạy bằng lệnh:
sudo service --status-all
Bạn sẽ nhận được một danh sách như thế này:
[ + ] triggerhappy
[ + ] udev
[ ? ] udev-mtab
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] urandom
[ + ] vsftpd
[ + ] weewx
[ - ] x11-common
Các + 's cho thấy dịch vụ đang chạy, các -'s dịch vụ không chạy, ?' S dịch vụ mà không cho phép tình trạng như một lệnh có thể: họ chủ yếu là lệnh mà không cần phải chạy tất cả các thời điểm đó, chỉ thỉnh thoảng.
Để quay lại câu hỏi của bạn, bạn cần hiểu runlevel s trong Linux. Runlevels (0-6 + S) xác định dịch vụ nào có thể / phải được chạy. Trình tự khởi động tiến triển từ một runlevel ban đầu (được chỉ định trong / etc / inittab , trong Raspberry của tôi
# The default runlevel.
id:2:initdefault:
dòng này xác định nó là 2, và sau đó tiến tới runlevel tiêu chuẩn cuối cùng của bạn (từ 2 đến 5). Bạn xác định runlevel hiện tại của bạn bằng lệnh
# runlevel
N 2
(trong trường hợp của tôi, một máy chủ không đầu). Các runlevels khác là (một lần nữa từ é / etc / inittab *):
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
Người dùng đơn (1) cũng thường được xác định là S.
Trong một khởi động bình thường, do đó bạn bắt đầu từ 2 và tăng lên 5. Để tìm các dịch vụ bắt đầu trong tiến trình này, hãy đưa ra lệnh:
# grep -nrI Default-Start /etc/init.d
umountroot:7:# Default-Start:
checkroot.sh:8:# Default-Start: S
kbd:6:# Default-Start: S
isc-dhcp-server:11:# Default-Start: 2 3 4 5
mountkernfs.sh:7:# Default-Start: S
hostname.sh:7:# Default-Start: S
mountnfs.sh:7:# Default-Start: S
halt:6:# Default-Start:
dphys-swapfile:20:# Default-Start: 2 3 4 5
bootlogs:7:# Default-Start: 1 2 3 4 5
rc.local:6:# Default-Start: 2 3 4 5
hostapd:9:# Default-Start: 2 3 4 5
keyboard-setup:8:# Default-Start: S
lightdm:7:# Default-Start: 2 3 4 5
procps:11:# Default-Start: S
mysql:9:# Default-Start: 2 3 4 5
single:6:# Default-Start: 1
vsftpd:7:# Default-Start: 2 3 4 5
samba:7:# Default-Start: 2 3 4 5
mountall.sh:6:# Default-Start: S
weewx:20:# Default-Start: 2 3 4 5
umountnfs.sh:7:# Default-Start:
triggerhappy:6:# Default-Start: 2 3 4 5
ifplugd:24:# Default-Start: 2 3 4 5
alsa-utils:9:# Default-Start: S
bootmisc.sh:7:# Default-Start: S
sendsigs:6:# Default-Start:
console-setup:7:# Default-Start: S
nfs-common:7:# Default-Start: 2 3 4 5 S
checkroot-bootclean.sh:6:# Default-Start: S
rsyslog:7:# Default-Start: 2 3 4 5
x11-common:7:# Default-Start: S
mountdevsubfs.sh:7:# Default-Start: S
cron:10:# Default-Start: 2 3 4 5
mountnfs-bootclean.sh:6:# Default-Start: S
mountall-bootclean.sh:6:# Default-Start: S
screen-cleanup:11:# Default-Start: S
udev:6:# Default-Start: S
ssh:7:# Default-Start: 2 3 4 5
haveged:8:# Default-Start: 2 3 4 5
hwclock.sh:26:# Default-Start: S
plymouth:9:# Default-Start: 2 3 4 5
motd:7:# Default-Start: 1 2 3 4 5
killprocs:6:# Default-Start: 1
networking:6:# Default-Start: S
fake-hwclock:9:# Default-Start: S
udev-mtab:6:# Default-Start: S
apache2:6:# Default-Start: 2 3 4 5
reboot:6:# Default-Start:
umountfs:6:# Default-Start:
plymouth-log:9:# Default-Start: S
openvpn:11:# Default-Start: 2 3 4 5
kmod:8:# Default-Start: S
ntp:7:# Default-Start: 2 3 4 5
rpcbind:9:# Default-Start: S 2 3 4 5
urandom:6:# Default-Start: S
rmnologin:6:# Default-Start: 2 3 4 5
checkfs.sh:7:# Default-Start: S
sudo:8:# Default-Start: 2 3 4 5
mtab.sh:6:# Default-Start: S
dbus:6:# Default-Start: 2 3 4 5
rsync:8:# Default-Start: 2 3 4 5
Thao tác này sẽ in dòng bắt đầu bằng Mặc định-Bắt đầu trong tất cả các tệp trong /etc/init.d/ , đây là nơi lưu giữ các tệp xác định các dịch vụ khác nhau. Dòng trong câu hỏi xác định runlevel nơi mỗi dịch vụ sẽ được bắt đầu. Nếu một dịch vụ được bắt đầu tại runlevel N, khi hệ thống tiến tới N + 1, nó không cần phải bắt đầu lại, nhưng nếu nó không chạy thì nó được khởi động.
Điều này cung cấp cho bạn một ý tưởng chính xác về các giai đoạn khác nhau mà các dịch vụ được bắt đầu. Nhưng trong cùng một runlevel, các dòng Bắt buộc và Bắt đầu nên bắt đầu xác định các phụ thuộc cứng và mềm cho dịch vụ đang được đề cập, tức là các dịch vụ phải chạy và nên chạy trước khi dịch vụ được kiểm tra. Nếu không có các dịch vụ Bắt đầu, dịch vụ được đề cập sẽ thất bại, nếu không có các dịch vụ Nên bắt đầu thay vào đó sẽ không có lỗi chung, có thể chỉ là thiếu một số tính năng hữu ích. Điều tương tự xảy ra khi dừng với Bắt buộc-Dừng và Nên dừng.
HỆ THỐNG :
Lệnh liệt kê tất cả các dịch vụ là
systemctl list-unit-files
Nó sẽ nhổ ra nhiều thông tin. Để chọn tất cả các dịch vụ được kích hoạt , tức là những dịch vụ được khởi động khi khởi động, chỉ cần grep lệnh trên như sau:
systemctl list-unit-files | grep enabled
Tôi thích lệnh này hơn cho các đơn vị danh sách systemctl : sự khác biệt là lệnh này sẽ chỉ hiển thị các dịch vụ mà HĐH của bạn có trong bộ nhớ = HĐH nghĩ rằng nó cần), trong khi các tệp đơn vị danh sách systemctl sẽ hiển thị tất cả các dịch vụ đã cài đặt, bao gồm cả các dịch vụ được cài đặt bịt mặt ( tức là những thứ được cho là không bao giờ được khởi động, thậm chí không phải bằng tay) và những thứ mà nó sẽ không kích hoạt, được gọi là tĩnh . Nói cách khác, lệnh tôi đề xuất là toàn diện hơn so với lệnh chỉ liệt kê các dịch vụ đang hoạt động .
NB : systemd rất khác với các hệ thống init trước. Đặc biệt, nó không có runlevel , nhưng mục tiêu . runlevels vẫn tồn tại vì lý do tương thích và có thể được xem là mục tiêu cụ thể bằng cách liệt kê tất cả các mục tiêu có sẵn thông qua
systemctl list-unit-files --type=target
trong khi bạn có thể thấy mục tiêu hiện tại của mình bằng phương tiện
$ systemctl get-default
graphical.target
Để biết thêm về điều này, bạn có thể đọc trang giới thiệu tuyệt vời của DigitalOceans .
systemd
, nhưng câu trả lời này dường như vẫn hoạt động.