Como eu determino se meus serviços estão usando runit ou init?

4

Como posso determinar se meus serviços estão usando runit ou init ? Eu uso o Ubuntu 10.0.4.

Como nginx, chef, fantoche, etc.

    
por User007 02.08.2012 / 08:22

3 respostas

1

pstree me fornece os processos abaixo,

$ 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} 

Com isso, eu acho, pode ser decidido.

    
por 28.06.2014 / 07:53
0

Eu não tenho certeza, mas como runit usa um supervisor, você deve ser capaz de reconhecê-lo a árvore de processos, ou seja, da saída de ps faux ou, se estiver instalada, pstree .

Você também pode pedir runit , ou seja, executar sv status nginx .

Entretanto, se tudo que você fez foi instalar runit , possivelmente nada foi trocado para usá-lo ao invés de "simples" init . Você pode examinar /proc/cmdline para uma ocorrência de init=/sbin/runit-init .

    
por 02.08.2012 / 09:03
0

Se você precisar que seus serviços tenham uma interface de controle comum , convém imitar o comportamento do script init.d com o comando sv . Se sv for chamado como /etc/init.d/NAME command , ele traduz automaticamente para sv command NAME .

Se você executar algum serviço (digamos ssh) em runit supervisor, poderá fazer o seguinte:

  1. Renomeie o script de inicialização atual:

    dpkg-divert --rename /etc/init.d/ssh
    
  2. Crie um link simbólico com o mesmo nome:

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

Agora você pode gerenciar seu serviço com comandos conhecidos como este:

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

No entanto, ter o symlink causará algumas reclamações sobre os cabeçalhos LSB. Então, é melhor não ter o symlink, mas criar um script de wrapper assim:

#!/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 "$@"

Dessa forma, você pode gerenciar os serviços da mesma maneira, estejam eles com runit ou não.

    
por 01.03.2013 / 16:38