Bagaimana cara saya menentukan apakah layanan saya menggunakan runit
atau init
? Saya menggunakan Ubuntu 10.0.4.
Seperti nginx, koki, boneka, dll.
sumber
Bagaimana cara saya menentukan apakah layanan saya menggunakan runit
atau init
? Saya menggunakan Ubuntu 10.0.4.
Seperti nginx, koki, boneka, dll.
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.
Saya tidak sepenuhnya yakin, tetapi karena runit
menggunakan supervisor, Anda harus dapat mengenalinya dari melihat pohon proses, yaitu dari output ps faux
atau, 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/cmdline
untuk terjadinya init=/sbin/runit-init
.
Jika Anda membutuhkan layanan Anda untuk memiliki antarmuka kontrol yang sama , mungkin lebih baik untuk meniru perilaku skrip init.d dengan sv
perintah. Jika sv
dipanggil sebagai /etc/init.d/NAME command
, ia secara otomatis menerjemahkannya ke sv command NAME
.
Jika Anda menjalankan beberapa layanan (misalkan ssh) di bawah runit
penyelia, Anda dapat melakukan hal berikut:
Ganti nama skrip init saat ini:
dpkg-divert --rename /etc/init.d/ssh
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 runit
atau tidak.