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.log
die 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 /tmp
hat ein Sticky Bit. Wenn ich adb mit dem adb nodaemon server
Schreiben 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.log
eine Datei umleiten ~/tmp/adb.log
.
Auch hier bin ich auf dem Server nicht als root, so chroot
, mount -o rbind
und chmod
sind 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 server
mit nohup
und die Ausgabeumleitung zurückgreifen , aber die allgemeine Frage ist immer noch relevant.
LD_PRELOAD
Tricks, obwohl das komplizierter wäre.
/home/$USER/tmp/adb.log
, adb fest zu
/tmp/adb.log
oder sogar eine eigene private Datei/tmp
bereitstellen. tunman unshare
undman namespaces
undman nsenter
.