-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 

我正在build立一个docker集装箱,里面有两个服务。 这些服务由Shell-Script开始:

 CMD ["./starter.sh"] 

使用Dockerfile我已经将日志redirect到/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/*并且想以非root的身份运行用户。 此外,我试图将用户添加到组tty ,这不工作。

谢谢。

的手册页指出执行的命令将没有控制terminal 。 任何写入/ dev / tty将返回ENXIO错误:

 $ errno ENXIO ENXIO 6 No such device or address 

sudo确实分配了一个控制terminal:

 sudo -u someone /bin/bash -c "echo hello > /dev/tty" 

如果在Dockerfile或Supervisor中使用USER指令,则不需要使用/ dev / tty(/ dev / stdout和/ dev / stderr就足够了)的符号链接,也可以使用sudo