감독자의 하위 stdout.log: 실시간 읽기

감독자의 하위 stdout.log: 실시간 읽기

감독자는 일부 하위 프로세스를 활성화합니다.

나는 각각을 다음과 같이 구성했습니다.

[program:XXXXX]
command=/XXXXX/XXXXX
directory=/XXXXXX
autostart=true
autorestart=true
startsecs=3
startretries=10000
stdout_logfile=/XXXXXX/stdout.log
stdout_logfile_maxbytes=1MB
stderr_logfile=/XXXXXX/stderr.log
stderr_logfile_maxbytes=1MB

프로세스 중 하나는 테스트 중에 실시간으로 읽고 싶은 많은 화면 출력을 생성하는 것입니다. 매초 5줄이 인쇄됩니다.

이제 로그인되었습니다 stdout.log.

stdout.log같이 읽어볼까 생각했는데

watch -0.1 tail /XXXXX/stdout.log

하지만 각 줄을 받을 때마다 업데이트되지 않는다는 것을 알 수 있습니다. 로그 내용은 파일에 저장되기 전에 미리 정의된 크기에 도달할 때까지 캐시될 것입니다.

나중에 참조하기 위해 stdout을 유지할 필요가 없습니다.

감독자를 다음으로 설정할 가능성이 있습니까?지속적으로 업데이트 stdout.log?

아니면 장기적으로 디스크 손상을 방지하기 위해 에 stdout저장하지 않고 마지막 X 줄을 다시 인쇄할 수 있는 가능성이 있습니까 stdout.log?

답변1

디스크 손상을 방지하려면(오랜 시간 동안 누군가가 걱정하는 것을 본 적이 없음) 램디스크를 생성하여 해당 로그 파일을 다음과 같이 지정할 수 있습니다.

mkdir /var/log/tmplogs
mount -t tmpfs -o size=5m tmpfs /var/log/tmplogs

또는 fstab 형식으로:

tmpfs       /var/log/tmplogs   nodev,nosuid,noexec,nodiratime,size=5M 0 0

그런 다음 이 /var/log/tmplogs디렉토리를 해당 파일의 대상으로 사용하십시오.

이것은 말한 로그 버퍼링 문제를 해결하지 못합니다. 그러나 일반적으로 지연은 명령이 출력을 버퍼링하는 것(tty 유무에 관계없이 다르게 동작할 수 있음)으로 인해 발생하는 것이지 감독자에 의한 것이 아닙니다. Supervisord의 예를 따르면 확인할 수 있습니다.문제 803.

stdout.log를 지속적으로 업데이트하도록 Supervisor를 설정할 수 있습니까?

나는 이미 수신하자마자 로그를 작성하도록 되어 있고 대부분 감독자의 문제는 아니지만 명령을 실행하지 않으면 버그가 발생했는지 또는 정상인지 알 수 있는 방법이 없기 때문에 아니오라고 말하고 싶습니다. 당신의 명령.

관련 정보