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.

User007
sumber

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.

prayagupd
sumber
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.

sr_
sumber
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.

artyom
sumber