Ich versuche, ADB auf einem Linux-Server mit mehreren Benutzern auszuführen, auf denen ich nicht root bin (um mit meinem Android-Emulator zu spielen). Der adb-Daemon schreibt seine Protokolle in die Datei, /tmp/adb.logdie leider fest in ADB codiert zu sein scheint, und diese Situation wird sich nicht ändern .
Daher kann adb nicht ausgeführt werden, was den offensichtlichen Fehler ergibt : cannot open '/tmp/adb.log': Permission denied. Diese Datei wurde von einem anderen Benutzer erstellt und /tmphat ein Sticky Bit. Wenn ich adb mit dem adb nodaemon serverSchreiben in stdout beginne , treten keine Fehler auf (ich habe auch den Port auf einen eindeutigen Wert eingerichtet, um Konflikte zu vermeiden).
Meine Frage ist: Gibt es eine Möglichkeit, ADB dazu zu bringen, in eine andere Datei zu schreiben als /tmp/adb.log? Gibt es allgemein eine Möglichkeit, eine Art prozessspezifischen Symlink zu erstellen? Ich möchte alle Dateizugriffe auf /tmp/adb.logeine Datei umleiten ~/tmp/adb.log.
Auch hier bin ich auf dem Server nicht als root, so chroot, mount -o rbindund chmodsind nicht gültig Optionen. Wenn möglich, möchte ich ADB-Quellen nicht ändern, aber wenn es keine anderen Lösungen gibt, werde ich das tun.
PS Für den spezifischen ADB-Fall kann ich auf die Ausführung adb nodaemon servermit nohupund die Ausgabeumleitung zurückgreifen , aber die allgemeine Frage ist immer noch relevant.
LD_PRELOADTricks, obwohl das komplizierter wäre.
/home/$USER/tmp/adb.log, adb fest zu
/tmp/adb.logoder sogar eine eigene private Datei/tmpbereitstellen. tunman unshareundman namespacesundman nsenter.