Cara yang benar untuk menginstal layanan pemula baru kustom

51

Saya menggunakan pemula untuk layanan di server saya. Menulis file conf dan menempatkannya /etc/initcukup mudah, tetapi itu tampaknya tidak sepenuhnya menginstal. Untuk satu, service --status-alltidak daftar layanan baru saya. Saya memeriksa dan jika saya membuat tautan /etc/init.dke /lib/init/ubstart-jobsana akan muncul di status. Tetapi melakukan ini secara manual membuat saya berpikir saya tidak melakukannya dengan benar, dan mungkin ada langkah-langkah konfigurasi lain yang tidak dilakukan.

Apa cara yang benar untuk menginstal layanan pemula sehingga terdaftar dengan benar di semua alat yang berurusan dengan layanan?

edA-qa mort-ora-y
sumber
2
Orang ini menjawab salah satu pertanyaan saya menggunakan layanan pemula dan memberikan penjelasan terperinci, mungkin menunjukkan langkah yang mungkin terlewatkan askubuntu.com/a/278128/75967
Meer Borg
1
Apakah maksud Anda /lib/init/upstart-job?
dalore

Jawaban:

46

Ketika Anda pertama kali menyalin file conf baru ke folder / etc / init Anda perlu memanggil:

initctl reload-configuration

Dengan ini pemula Anda harus terdaftar dengan benar.

Tombert
sumber
8
Jadi ini benar set up pekerjaan (yaitu, startdan stoppekerjaan) tetapi tidak membuat pekerjaan muncul dalam status semua. Saya masih harus menambahkannya secara manual /etc/init.d/untuk itu terjadi.
James McMahon
1
@JamesMcMahon Anda perlu menjalankan initctl listperintah dengan sudo: sudo initctl list. Dengan begitu Anda akan melihat daftar layanan lengkap.
Shahriyar Imanov
Mengapa sudo, sepertinya tidak mengubah output dari daftar initctl sama sekali.
LovesTha
@JamesMcMahon I still had to manually add it to /etc/init.d,. Anda masih harus menambahkan apa? Itu berarti bahwa, selain X.conffile yang ditambahkan /etc/init, juga perlu menambahkan file /etc/init.d?
Kevin Meredith
@KevinMeredith, Maaf saya tidak lebih detail. Sudah 2 tahun dan saya tidak bisa mengingat secara spesifik. Jika Anda melihat beberapa dokumentasi init.d semoga menjadi jelas.
James McMahon
18

Lihat manual layanan:

service --status-all menjalankan semua skrip init, dalam urutan abjad, dengan perintah status. Opsi ini hanya memanggil status untuk pekerjaan sysvinit, pekerjaan pemula dapat ditanyakan dengan cara yang sama dengan daftar initctl.

(penekanan ditambahkan)

Itu sebabnya menambahkannya ke /etc/init.d (di mana pekerjaan sysvinit berada) membuat pekerjaan itu. Jadi: coba jalankan initctl list sebagai gantinya :).

Kyle
sumber
That's why adding it Menambahkan apa? Selain my_service.conffile dalam /etc/init, itu juga perlu memiliki /etc/init.dfile?
Kevin Meredith
Tidak bekerja dengan Ubuntu 16.04.4 LTS \\ $ daftar initctl initctl: Nama "com.ubuntu.Upstart" tidak ada $ sudo initctl daftar initctl: Tidak dapat terhubung ke Pemula: Gagal terhubung ke soket / com / ubuntu / pemula: Sambungan ditolak
sembilan9 lima
13

Untuk Layanan SysV

Pastikan Anda mengikuti langkah-langkah berikut sambil menambahkan / membuat layanan baru di Ubuntu.

  1. Buat file layanan di /etc/init.d/<service name>
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

Sekarang ketemu layanan Anda di

service --status-all
Suyash Jain
sumber
15
jawaban Anda berhubungan dengan sysv dan bukan pemula. Anda mungkin ingin menghapusnya.
jcomeau_ictx
3
Ini memang respons yang berguna.
ATorras
Meskipun ini berkaitan dengan serivice lain, ini memang berguna
wuppi
1

Saya telah menemukan bahwa kesalahan dalam file .conf dapat membuat pekerjaan tidak dikenali initctl. misalnya, memiliki setuidgaris dalam pemula versi 1.3 atau yang lebih lama.

jcomeau_ictx
sumber
1

Walaupun jawaban yang dipilih saat ini benar untuk mendapatkan layanan baru ditambahkan ke pemula, itu tidak terlalu membantu untuk mengetahui MENGAPA konfigurasi di / etc / init / gagal memuat - bagian yang hilang menggunakan init-checkconf terlebih dahulu untuk memastikan konfigurasi Anda valid, dan kemudian menggunakan konfigurasi-ulang:

####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string

####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok

####then reload:
# initctl reload-configuration

#### and start:
# start test
Jeff Parsons
sumber