내 서비스가 runit 또는 init를 사용하고 있는지 어떻게 알 수 있나요?

내 서비스가 runit 또는 init를 사용하고 있는지 어떻게 알 수 있나요?

runit내 서비스가 사용 중인지 여부 를 어떻게 확인할 수 있나요 init? 우분투 10.0.4를 사용하고 있습니다.

nginx, Chef, Puppet 등과 같은

답변1

pstree 다음과 같은 과정을 알려주세요.

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

이렇게 하면 결정될 수 있을 것 같아요.

답변2

확실하진 않지만, 그 이후로runitps faux감독자를 사용하면 프로세스 트리, 즉 또는 (설치된 경우)의 출력을 보고 이를 식별할 수 있어야 합니다 pstree.

당신은 또한 단지묻다runit, 즉 실행 중입니다 sv status nginx.

하지만 당신이 하는 모든 일이설치하다runit, 아무것도 얻지 못할 수도 있습니다그것을 사용하도록 전환"보통"보다는 init. /proc/cmdline나타나는지 확인할 수 있습니다 init=/sbin/runit-init.

답변3

당신이 필요로하는 경우공통 제어 인터페이스를 갖춘 서비스sv, init.d 스크립트의 동작을 모방하는 명령을 사용하는 것이 가장 좋습니다 . sva로 호출 되면 /etc/init.d/NAME command자동으로 로 변환됩니다 sv command NAME.

감독자(Ssh라고 가정) 하에서 일부 서비스를 실행하는 경우 runit다음을 수행할 수 있습니다.

  1. 현재 초기화 스크립트의 이름을 바꿉니다.

    dpkg-divert --rename /etc/init.d/ssh
    
  2. 동일한 이름으로 심볼릭 링크를 만듭니다.

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

이제 다음과 같이 익숙한 명령을 사용하여 서비스를 관리할 수 있습니다.

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

그러나 기호 링크를 사용하면 LSB 헤더에 대한 일부 불만 사항이 발생합니다. 따라서 심볼릭 링크를 사용하지 않고 다음과 같은 래퍼 스크립트를 만드는 것이 좋습니다.

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

이렇게 하면 서비스가 실행 중이든 아니든 동일한 방식으로 서비스를 관리할 수 있습니다 runit.

관련 정보