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
확실하진 않지만, 그 이후로runit
ps faux
감독자를 사용하면 프로세스 트리, 즉 또는 (설치된 경우)의 출력을 보고 이를 식별할 수 있어야 합니다 pstree
.
당신은 또한 단지묻다runit
, 즉 실행 중입니다 sv status nginx
.
하지만 당신이 하는 모든 일이설치하다runit
, 아무것도 얻지 못할 수도 있습니다그것을 사용하도록 전환"보통"보다는 init
. /proc/cmdline
나타나는지 확인할 수 있습니다 init=/sbin/runit-init
.
답변3
당신이 필요로하는 경우공통 제어 인터페이스를 갖춘 서비스sv
, init.d 스크립트의 동작을 모방하는 명령을 사용하는 것이 가장 좋습니다 . sv
a로 호출 되면 /etc/init.d/NAME command
자동으로 로 변환됩니다 sv command NAME
.
감독자(Ssh라고 가정) 하에서 일부 서비스를 실행하는 경우 runit
다음을 수행할 수 있습니다.
현재 초기화 스크립트의 이름을 바꿉니다.
dpkg-divert --rename /etc/init.d/ssh
동일한 이름으로 심볼릭 링크를 만듭니다.
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
.