gpt4 book ai didi

heroku - 为什么 Heroku 拒绝访问/dev/stdout 和/dev/stderr?

转载 作者:行者123 更新时间:2023-12-01 23:58:05 24 4
gpt4 key购买 nike

我想配置一个应用程序以将日志写入/dev/stdout,以便它们最终进入 Heroku 的 logplex。但是,我在尝试写入/dev/stdout 时遇到权限被拒绝的情况。

我不是在寻找解决方法。我可以煮很多。我真的很想知道为什么 Heroku 拒绝打开和写入/dev/stdout,如果有人对此有所了解的话。谢谢!

最佳答案

Permission Denied 错误的原因是 /dev/stdout 符号链接(symbolic link)悬空而不是终止于 /dev/pts 中分配的伪 tty:

~ $ ls -l /dev/stdout /proc/self/fd/1 /dev/pts/0
lrwxrwxrwx 1 root root 15 2014-03-29 17:21 /dev/stdout -> /proc/self/fd/1
lrwx------ 1 u59417 59417 64 2014-03-29 17:25 /proc/self/fd/1 -> /dev/pts/0
ls: cannot access /dev/pts/0: No such file or directory

由于悬挂符号链接(symbolic link)终止于用户没有写入权限的目录 (/dev/pts),操作系统拒绝创建不存在的 /dev/pts/0

关于为什么 /dev/pts/0 不存在:Heroku 的虚拟化基于 LXC(参见 https://devcenter.heroku.com/articles/dynos#technologies)。这并不排除伪 tty 分配,但在这种情况下,伪 tty 可能是在主机操作系统中分配的,并且 guest 容器不会在 /dev/pts 中继承它(无论是有意还是无意,这将是一个相关的问题)。

关于heroku - 为什么 Heroku 拒绝访问/dev/stdout 和/dev/stderr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com