누군가 이런 일이 발생하는 이유를 설명해주십시오.-su :/dev/tty : 그런 장치 나 주소가 없습니다.
# su - someone -s /bin/bash -c "ls -la /dev/tty"
crw-rw-rw- 1 nobody nogroup 5, 0 Dec 7 20:53 /dev/tty
# BUT:
# su - someone -s /bin/bash -c "echo hello > /dev/tty"
-su: /dev/tty: No such device or address
나는 2 개의 서비스가 내부에있는 도커 컨테이너를 구축하기 위해 3 인입니다. 이러한 서비스 A A 쉘 스크립트에 의해 startet 다음 Dockerfile
withing에
CMD ["./starter.sh"]
나는 /dev/stderr
또는 /dev/tty
# None of the following works:
RUN ln -sf /dev/tty /var/log/thelog.log
RUN ln -sf /dev/stdout /var/log/thelog.log
RUN ln -sf /dev/stderr /var/log/thelog.log
문제는 내가 서비스 중 하나를 실행하기 위해 노력하고있어 것입니다에 로그 방향을 전환 다음과 같은 오류의주지 루트 (su - someone -c "service"
)과 같이
unable to open log file [/var/log/thelog.log]: [6] No such device or address
는이 문제를 어떻게 해결할 수 있을까? 로그를 /dev/*
에 연결하고 루트가 아닌 사용자로 실행하려고합니다. 또한 사용자를 그룹 tty
에 추가하려고 시도했으나 제대로 작동하지 않았습니다.
감사합니다.
심볼릭 링크로 장치를 교체하는 것은 매우 취 약하고 위험한 것으로 보입니다. 커널은 tty를 조작합니다. 정적 파일 디스크립터가 아니기 때문에 오류가 발생합니다. – tripleee
서비스를 적절한 위치에 캡처하는 서비스에 랩핑하십시오. 대부분의 정상적인 서비스는 실제로 아무 것도 콘솔에 인쇄하지 않습니다. – tripleee
안녕하세요, 고마워요.하지만 그렇게하는 것은 도커와 함께하는 일반적인 관행입니다. '/ dev/*'로 리디렉션하면'docker logs mycontainer'로 로그를 볼 수 있습니다. 따라서이 문제의 핵심은 'su -'이며 다른 사용자 (! = root) 사용자로 프로세스를 시작하는 것입니다. – chevallier