Bagaimana cara saya menentukan apakah layanan saya menggunakan runit atau init?


4

Bagaimana cara saya menentukan apakah layanan saya menggunakan runitatau init? Saya menggunakan Ubuntu 10.0.4.

Seperti nginx, koki, boneka, dll.

Jawaban:


1

pstree memberi saya proses seperti di bawah ini,

$ pstree
init-+-VBoxService---7*[{VBoxService}]                                                                 
     |-acpid                                                                                           
     |-atd                                                                                             
     |-cron                                                                                            
     |-dbus-daemon                                                                                     
     |-2*[dhclient3]                                                                                   
     |-5*[getty]                                                                                       
     |-login---bash---sudo---su---bash---pstree                                                        
     |-nginx---4*[nginx]                                                                               
     |-rsyslogd---3*[{rsyslogd}]                                                                       
     |-runsvdir-+-runsv---node---{node}                                                                
     |          |-runsv---java---9*[{java}]                                                            
     |          `-runsv                                                                                
     |-sshd                                                                                            
     |-udevd---2*[udevd]                                                                               
     |-upstart-socket-                                                                                 
     |-upstart-udev-br                                                                                 
     `-whoopsie---{whoopsie} 

Dengan ini, saya pikir, itu bisa diputuskan.


0

Saya tidak sepenuhnya yakin, tetapi karena runitmenggunakan supervisor, Anda harus dapat mengenalinya dari melihat pohon proses, yaitu dari output ps fauxatau, jika itu diinstal pstree,.

Anda juga bisa hanya bertanyarunit , yaitu lari sv status nginx.

Namun perlu dicatat bahwa jika yang Anda lakukan hanyalah menginstalrunit , mungkin tidak ada yang beralih untuk menggunakannya alih-alih "polos" init. Anda dapat memeriksa /proc/cmdlineuntuk terjadinya init=/sbin/runit-init.


0

Jika Anda membutuhkan layanan Anda untuk memiliki antarmuka kontrol yang sama , mungkin lebih baik untuk meniru perilaku skrip init.d dengan svperintah. Jika svdipanggil sebagai /etc/init.d/NAME command, ia secara otomatis menerjemahkannya ke sv command NAME.

Jika Anda menjalankan beberapa layanan (misalkan ssh) di bawah runitpenyelia, Anda dapat melakukan hal berikut:

  1. Ganti nama skrip init saat ini:

    dpkg-divert --rename /etc/init.d/ssh
    
  2. Buat symlink dengan nama yang sama:

    ln -vs $(which sv) /etc/init.d/ssh
    

Sekarang Anda dapat mengelola layanan Anda dengan perintah yang sudah dikenal seperti ini:

/etc/inti.d/ssh status
invoke-rc.d ssh status

Memiliki symlink akan menyebabkan beberapa keluhan tentang header-LSB. Jadi lebih baik tidak memiliki symlink, tetapi untuk membuat skrip wrapper seperti ini:

#!/bin/sh

### BEGIN INIT INFO
# copy these headers from your original script which
    # can be found at /etc/init.d/ssh.distrib
    ### END INIT INFO

exec /usr/bin/chpst -b $0 /usr/bin/sv "$@"

Dengan cara ini Anda dapat mengelola layanan dengan cara yang sama, apakah mereka berada di bawah runitatau tidak.

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.