我正在尝试在不具有root用户的多个用户的linux服务器上运行ADB(与我的android模拟器一起玩)。adb守护程序将其日志写入文件/tmp/adb.log,不幸的是,该日志似乎已硬编码到ADB中,这种情况不会改变。
因此,adb无法运行,给出了明显的错误:cannot open '/tmp/adb.log': Permission denied。该文件是由另一个用户创建的,/tmp具有粘性。如果我通过adb nodaemon server将adb 写入stdout来启动它,则不会发生任何错误(我还将其端口设置为唯一值以避免冲突)。
我的问题是:有什么方法可以使ADB写入另一个文件/tmp/adb.log?更一般而言,是否有一种方法可以创建一种特定于过程的符号链接?我想将所有文件访问重定向/tmp/adb.log到一个文件~/tmp/adb.log。
同样,我不是服务器的root用户,所以chroot,mount -o rbind并且chmod不是有效的选项。如果可能的话,我不想修改ADB的来源,但是如果没有其他解决方案,我一定会做的。
PS对于特定的ADB案例,我可以求助于adb nodaemon serverwith nohup和输出重定向,但是一般问题仍然很重要。
LD_PRELOAD技巧,尽管那会更加复杂。
/home/$USER/tmp/adb.log和重建adb 会更容易:)
/tmp/adb.log,甚至/tmp完全挂载其自己的专用文件。做man unshare和man namespaces和man nsenter。