
시작시 실행하기 위해 runit runer를 사용하고 있습니다. runit이 실행하는 프로그램의 모든 출력을 파일에 기록하고 싶습니다.
나는 본 적이svlogd그러나 나는 그것을 실행하는 방법을 모른다.
답변1
나는 그것을 작동시키는 방법을 모른다.
daemontools 시리즈의 세계에서 로그 서비스는 다른 서비스와 같습니다. 따라서 "기본" 서비스를 실행하는 프로그램에서와 마찬가지로 프로그램을 svlogd
실행 합니다 .run
run
"로그" 서비스는 다음과 같은 점에서만 특별합니다.
- "로그" 서비스 디렉터리는 "기본" 서비스 디렉터리(또는 바로 아래 하위 디렉터리)의 심볼릭 링크를 사용하여 위치합니다.
- 일부(전부는 아님) daemontools 도구 세트 제품군은 "로그" 및 "기본" 서비스를 긴밀하게 바인딩하고 두 서비스를 단일 단위로 작동합니다. 어느 정도는 runit의 경우입니다.
그렇지 않으면 다른 모든 것과 똑같습니다.
svlogd
따라서 다른 서비스를 생성하는 것처럼 실행할 "로그" 서비스를 생성하고 "기본" 서비스를 기준으로 올바른 위치에 배치한 후 시작하십시오.
추가 읽기
- 조나단 데보인 폴라드(2015)."기록". 데몬 도구 계열. 일반적인 답변.
- 게릿 파프."추가 로그 서비스를 사용하여 새 서비스 카탈로그를 어떻게 생성합니까?". 런잇 FAQ.
- 다니엘 J. 번스타인. "로그가 포함된 서비스 카탈로그를 어떻게 생성하나요?". 데몬툴즈 FAQ.
답변2
가장 먼저 해야 할 일은 시스템에서 runit 파일이 어디에 있는지 알아내는 것입니다. 일반적으로 각 서비스에 대해 하나의 /etc/runit/
디렉터리가 생성된 디렉터리를 찾을 수 있습니다 .sv
이라는 새로운 서비스를 생성한다고 가정해 보겠습니다 food
. food
이라는 이름의 디렉터리를 만듭니다 /etc/runit/sv/
.
# mkdir /etc/runit/sv/food
에서 run
스크립트를 만듭니다 /etc/runit/sv/food
. 서비스 프로그램이 에 있는 실행 파일이라고 가정합니다 /opt/bin/foo
. 이 경우 run
스크립트는 다음과 같습니다.
#!/bin/sh
exec /opt/bin/foo 2>&1
로깅을 위해서는 /etc/runit/sv/food
이름이 지정된 디렉터리 내에 다른 디렉터리를 만들어야 합니다 log
. run
그 안에 또 다른 스크립트가 있습니다 .
#!/bin/sh
exec svlogd -tt <logs-directory>
수출을 보장합니다 <logs-directory>
. 그리고 두 스크립트를 모두 실행 가능하게 만드는 것을 잊지 마십시오 run
.
# chmod +x /etc/runit/sv/food/run
# chmod +x /etc/runit/sv/food/log/run
food
내부 디렉토리에 대한 심볼릭 링크를 만듭니다./etc/runit/runsvdir/default
# ln -s /etc/runit/sv/food /etc/runit/runsvdir/default/
서비스를 수동으로 시작/중지하려면 다음을 실행하세요.
# sv start food
# sv stop food
이것을 잡아빠른 시작 가이드자세한 내용은.
가이드와 달리 chpst
. 이 경우 food
서비스는 root
. chpst
특정 사용자로 서비스를 실행하려면 가이드의 권장 사항을 따르세요.