Lệnh liệt kê các dịch vụ bắt đầu khi khởi động?


144

Có một lệnh để liệt kê các dịch vụ chạy khi khởi động không? Tôi tưởng tượng nó sẽ liên quan đến phân tích cú pháp /etc/init.d/và các /etc/rc.*thư mục khác nhau .

Câu trả lời:


104

Bạn chỉ có thể sử dụng initctl listlệnh shell để liệt kê nội dung /etc/initthay vì dbus-sendlệnh được đề xuất .


2
Cái này có hoạt động trong Ubuntu 18.04 không? Tôi nhận được "initctl: lệnh không tìm thấy" (trong bash)
Sanjay Manohar

121

Câu trả lời nhanh là: Nó phụ thuộc vào inithệ thống của bạn .

Câu trả lời dài là: Đối với các phiên bản hiện tại của Ubuntu, bạn có thể có sự kết hợp của UpstartSystemV . Các phiên bản mới hơn của Ubuntu sau 15.04 " Verv Vervet " (và các bản phân phối Linux khác như RHEL / CentOS 7) đang chuyển sang sử dụng SystemD .

Mới bắt đầu

Để liệt kê tất cả các dịch vụ:

initctl list

Để liệt kê tất cả các dịch vụ Upstart và chạy initctl show-configtrên chúng, lớp lót này có thể hữu ích:

initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config

Hệ thống V

Để liệt kê tất cả các dịch vụ:

service --status-all

HOẶC LÀ:

# for init scripts:
ls /etc/init.d/

# for runlevel symlinks:
ls /etc/rc*.d/

Hệ thống

Để liệt kê tất cả các dịch vụ:

systemctl list-unit-files --type=service

HOẶC LÀ:

ls /lib/systemd/system/*.service /etc/systemd/system/*.service

9
Đây phải là câu trả lời được chấp nhận.
sjas

service --status-allKHÔNG hiển thị liệu các dịch vụ có được kích hoạt để khởi động khi khởi động hay không, ít nhất là không phải trên Ubuntu 16. Nó cho thấy các dịch vụ hiện đang chạy hay chưa.
tự đại diện

1
Tôi đã phải sudo service --status-allcó được tất cả các dịch vụ để hiển thị. Một số bị ẩn khi tôi chỉ chạy service --status-alltrên tài khoản không root.
Phlucious

@Phlucious: Cảm ơn bạn đã đề cập đến điều đó. Tôi cho rằng nó cũng biết rằng các lệnh này thường chạy như root ( systemctl, service, initctl...) vì chúng thường được coi lệnh quản trị hệ thống.
TrinitronX

13

Các /etc/init.d/etc/rc.*thư mục đã được thay thế bởi upstartcông cụ ' ' init. Mặc dù các tập lệnh trong các thư mục này sẽ được thực thi như mong đợi, phương thức mới để chạy mọi thứ trên init được xác định bởi các tệp trong/etc/init/

Bạn có thể liệt kê tất cả các công việc mới bắt đầu bằng cách truy vấn mới bắt đầu qua dbus:

dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
        /com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs

Bạn có thể phải thay đổi 0_6để phản ánh phiên bản mới bắt đầu mà bạn có. Lệnh này hoạt động trên cài đặt sáng suốt của tôi.


3
@Eric H: Có thể bạn đặt câu trả lời bên dưới là chính xác thay vào đó - initctl listđẹp hơn nhiều so với lệnh dbus này. Tôi muốn để lại câu trả lời này ở đây để tham khảo (thay vì xóa nó hoàn toàn).
Jeremy Kerr

12

Nếu bạn muốn một đại diện đồ họa đẹp cho các dịch vụ và thời gian cần thiết để khởi động hãy thử:

apt-get install bootchart

11

Id sử dụng initctl show-config <servicename>để thực sự có được thông tin chi tiết về thời điểm / nếu dịch vụ của bạn sẽ bắt đầu trong khi khởi động.

Thích như vậy:

$ initctl show-config myservice
myservice
  start on runlevel [2345]
  stop on runlevel [!2345]

Hoặc cho NFS4 idmap-daemon:

$ initctl show-config idmapd
idmapd
  start on (local-filesystems or mounting TYPE=nfs4)
  stop on runlevel [06]

chkconfig chỉ được ưu tiên trên các hệ thống dựa trên RedHat.


1
Đây là câu trả lời chính xác. Tôi không biết tại sao tất cả các câu trả lời sai và không đầy đủ được đánh giá cao như vậy.
Cerin

1
Doenst này hoạt động cho những người sử dụng SysV, tôi đồng ý đây là một câu trả lời tốt nhưng nó không đầy đủ.
Gabriel Netto

9

Vào ngày 12.04, chúng tôi có thể sử dụng:

sudo apt-get install chkconfig
chkconfig --list

nhưng nó đã được gỡ bỏ trong 12.10 .

Đầu ra mẫu:

acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on

2
Không hoạt động trong Ubuntu. packages.ubuntu.com/...
AB

@AB cảm ơn đã cho tôi biết! Ngày nay, rất hiếm khi những người downvot bình luận: nó đòi hỏi sự can đảm và cho phép tôi học hỏi. được cập nhật với phiên bản mà nó hoạt động.
Ciro Santilli 心 心



0

Bên cạnh các dịch vụ hệ thống và tập lệnh theo:

/etc/init.d/
/ lib / systemd / system /
/ etc / systemd / system /

Có lẽ cũng có Ứng dụng AutoStart , ví dụ:

find / -name "*autostart*"

ls -1 "/etc/xdg/autostart" "/home/$USER/.config/autostart" "/usr/share/gdm/autostart"  "/usr/share/gnome/autostart"

-2

Sử dụng gawk:

ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}'

Đầu ra mẫu:

$ ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}' | egrep README
README 0,1,2,3,4,5,6,S
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.