#!/bin/sh
. /lib/lsb/init-functions
log_daemon_msg "this is a daemon s message"
쉘 콘솔에서는 다음과 같이 인쇄됩니다.
this is a daemon s message
데몬에는 표준 출력이 전혀 없습니다. 그렇다면 daemon startup
스크립트는 왜 작성되었는가 stdout
? 파일을 사용하면 안되나요 syslog
? 부팅 시간 문제를 디버깅하기 위해 초기화 로그를 시스템 로그 파일로 리디렉션하려면 어떻게 해야 합니까? 우분투 14.04를 사용하고 있습니다.
답변1
데몬에는 표준 출력이 전혀 없습니다.
잘못된. 데몬이 daemontools 도구 세트 제품군 중 하나에 의해 관리되는 경우(https://unix.stackexchange.com/a/179798/5132), 데몬은 로깅 서비스에 연결하는 파이프에 대한 개방형 표준 출력 파일 설명자를 상속합니다. systemd를 사용하는 경우 (기본 구성에서) 데몬은 systemd 로깅 서비스의 소켓에 연결하는 개방형 표준 출력 파일 설명자를 상속합니다.
그럼에도 불구하고 init.d
스크립트를 난독화하고 있습니다.관리하다데몬 프로세스 및 데몬 프로세스 자체. System V rc
및 systemd 의 경우 init.d
스크립트는 데몬 프로세스 자체의 시작 및 중지만 발생시킵니다. (System V의 경우 rc
와 같은 도우미를 사용하여 이 작업을 수행합니다 start-stop-daemon
. systemd의 경우 systemctl
#1을 처리하기 위해 D-Bus RPC를 통해 명령을 보내는 데 사용됩니다.) 데몬 자체는 아닙니다.
데몬의 표준 출력은 init.d
스크립트의 표준 출력과 반드시 관련이 있는 것은 아닙니다. 후자의 표준 출력을 사용하고 있습니다 log_daemon_msg
. 이 쉘 함수 및 관련 함수는 친숙한 메시지를 인쇄합니다.데몬 관리 스크립트에서는 데몬 제어 명령을 실행하려고 할 때 관리 스크립트가 수행하는 작업을 보여줍니다. 그들은 사용되지 않습니다데몬 자체에서.
아이러니하게도 데몬은 systemd와 다르게 관리되기 때문에 log_daemon_msg
소스 관리 스크립트가 /lib/lsb/init-functions
결국 모든 제어 명령을 systemctl
.
부팅 시간 문제를 디버깅하기 위해 초기화 로그를 시스템 로그 파일로 리디렉션하려면 어떻게 해야 합니까?
당신에게는 임무가 있습니다. 이 작업의 하위 작업이 어떤 방식으로든 해결될 수 있다고 판단하고 여기서 의도하지 않은 작업을 log_daemon_msg
수행하는 방법을 묻습니다 . log_daemon_msg
당신의 집중진짜질문.
우분투 14.04는 upstart를 사용합니다. 실행 수준 이벤트가 발생할 때 실제로 System V를 실행하여 /etc/init/rc.conf
System V와의 하위 호환성을 제공하는 시작 작업이 있습니다. 이 직업은rc
rc
에 나열누보 리치 요리법용도는 보시다시피console output
스탠자.
보시다시피레시피및 upstart — 데몬(기본적으로)은 upstart의 작업별 로깅 메커니즘에 연결된 개방형 표준 출력 파일 설명자를 상속합니다. 다시 한번 말하지만, 데몬에는 "표준 출력이 없다"는 개념은 잘못된 것입니다. 이 /etc/init/rc.conf
작업은 (기본값이 아닌) 옵션을 사용하여 표준 출력을 콘솔에 연결합니다. 물론 이는 System rc
V 에서 생성된 다양한 데몬 관리 스크립트의 출력도 리디렉션합니다.
따라서 작업 출력과 해당 작업이 생성하는 System V 관리 스크립트를 다른 곳에 기록하려면 /etc/init/rc.conf
작업 사양을 수정하십시오.
부팅 시간 문제를 디버깅하려면 다음 메커니즘을 사용하십시오.에 설명된누보 리치 요리법(그리고 AskUbuntu Stack Exchange에 대한 몇 가지 답변) 부팅 시 디버깅을 위한 것입니다.
추가 읽기
- 런레벨. 우분투 14.04 매뉴얼 페이지. 모델.
- 시작하다우분투 14.04 매뉴얼 페이지. 모델.
- https://askubuntu.com/questions/36200/
- https://askubuntu.com/questions/116407/
- https://superuser.com/questions/403847/