Perintah untuk mendaftar layanan yang dimulai saat startup?


144

Apakah ada perintah untuk mendaftar layanan yang berjalan saat startup? Saya membayangkan itu akan melibatkan penguraian /etc/init.d/, dan berbagai /etc/rc.*direktori.

Jawaban:


104

Anda cukup menggunakan initctl listperintah shell untuk membuat daftar isi /etc/initdaripada dbus-sendperintah yang disarankan .


2
Apakah ini berfungsi di Ubuntu 18.04? Saya mendapatkan "initctl: command not found" (in bash)
— Sanjay Manohar

121

Jawaban cepatnya adalah: Itu tergantung pada initsistem Anda .

Jawaban panjangnya adalah: Untuk versi Ubuntu saat ini, Anda mungkin memiliki campuran Upstart , dan SystemV . Versi Ubuntu yang lebih baru setelah 15,04 "Vivid Vervet" (dan distro Linux lainnya seperti RHEL / CentOS 7) bergerak untuk menggunakan SystemD .

Pemula

Untuk membuat daftar semua layanan:

initctl list

Untuk mendaftar semua layanan pemula dan menjalankannya initctl show-config, one-liner ini mungkin bermanfaat:

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

Sistem V

Untuk membuat daftar semua layanan:

service --status-all

ATAU:

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

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

SystemD

Untuk membuat daftar semua layanan:

systemctl list-unit-files --type=service

ATAU:

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

9
Ini harus menjadi jawaban yang diterima.
— sjas

service --status-allTIDAK menunjukkan apakah layanan diaktifkan untuk memulai saat boot, setidaknya tidak pada Ubuntu 16. Ini menunjukkan apakah layanan sedang berjalan atau tidak.
— Wildcard

1
Saya harus sudo service --status-allmendapatkan semua layanan untuk muncul. Beberapa disembunyikan ketika saya hanya menjalankan service --status-allakun non-root.
— Phlucious

@ Pucucious: Terima kasih telah menyebutkan itu. Saya berasumsi itu juga diketahui bahwa perintah ini biasanya dijalankan sebagai root ( systemctl, service, initctl...) karena mereka biasanya dianggap perintah administrasi sistem.
— TrinitronX

13

Direktori /etc/init.ddan /etc/rc.*telah digantikan oleh upstartalat init ' '. Meskipun skrip di direktori ini akan dieksekusi seperti yang diharapkan, metode baru untuk menjalankan berbagai hal di init ditentukan oleh file dalam/etc/init/

Anda dapat membuat daftar semua pekerjaan pemula dengan dengan menanyakan pemula di atas dbus:

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

Anda mungkin harus mengubah 0_6untuk mencerminkan versi pemula yang Anda miliki. Perintah ini berfungsi pada instal jelas saya.


3
@ Eric H: Bisakah Anda mengatur jawaban di bawah ini sebagai benar - initctl listjauh lebih baik daripada perintah dbus ini. Saya ingin meninggalkan jawaban ini di sini untuk referensi (daripada menghapusnya sepenuhnya).
— Jeremy Kerr

12

Jika Anda ingin representasi grafis yang bagus dari layanan dan waktu yang diperlukan untuk mem-boot coba:

apt-get install bootchart

11

Id digunakan initctl show-config <servicename>untuk benar-benar mendapatkan detail kapan / jika layanan Anda akan mulai saat boot.

Seperti itu:

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

Atau untuk NFS4 idmap-daemon:

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

chkconfig hanya disukai pada sistem berbasis RedHat imho.


1
Ini jawaban yang benar. Saya tidak tahu mengapa semua jawaban yang salah dan tidak lengkap sangat dinaikkan.
— Cerin

1
Doenst ini berfungsi untuk orang yang menggunakan SysV, saya setuju ini jawaban yang bagus tetapi tidak lengkap.
— Gabriel Netto

9

Pada 12,04 kita bisa menggunakan:

sudo apt-get install chkconfig
chkconfig --list

tetapi dihapus pada 12.10 .

Output sampel:

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
Tidak berfungsi di Ubuntu. Packages.ubuntu.com/…
— AB

@ AB terima kasih telah memberi tahu saya! Jarang untuk downvoters berkomentar saat ini: membutuhkan keberanian dan memungkinkan saya untuk belajar. diperbarui dengan versi kerjanya.
— Ciro Santilli 新疆 改造 中心 法轮功 六四 事件



0

Selain layanan sistem dan skrip di bawah:

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

Mungkin ada Aplikasi AutoStart juga, misalnya:

find / -name "*autostart*"

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

-2

Menggunakan 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)}}'

Output sampel:

$ 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.