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.