Próbuję uruchomić ADB na serwerze Linux z wieloma użytkownikami, na których nie jestem rootem (aby grać z moim emulatorem Androida). Demon adb zapisuje swoje dzienniki do pliku, /tmp/adb.logktóry niestety wydaje się być zakodowany na stałe w ADB i ta sytuacja się nie zmieni .
Więc adb nie udaje się uruchomić, co daje oczywisty błąd: cannot open '/tmp/adb.log': Permission denied. Ten plik jest tworzony przez innego użytkownika i /tmpma trochę lepką wersję. Jeśli zacznę adb od zmuszenia adb nodaemon servergo do zapisu na standardowe wyjście, nie wystąpią żadne błędy (ustawiłem również jego port na unikalną wartość, aby uniknąć konfliktów).
Moje pytanie brzmi: czy jest jakiś sposób, aby ADB zapisał do innego pliku niż /tmp/adb.log? Mówiąc bardziej ogólnie, czy istnieje sposób na stworzenie pewnego rodzaju dowiązania symbolicznego specyficznego dla procesu? Chcę przekierować wszystkie dostępy do plików /tmp/adb.log, mówiąc, do pliku ~/tmp/adb.log.
Znowu, nie jestem root na serwerze, tak chroot, mount -o rbindi chmodnie są poprawne opcje. Jeśli to możliwe, nie chciałbym modyfikować źródeł ADB, ale na pewno, jeśli nie będzie innych rozwiązań, zrobię to.
PS W konkretnym przypadku ADB mogę skorzystać adb nodaemon serverz nohupprzekierowania i wyjścia, ale ogólne pytanie jest nadal aktualne.
LD_PRELOADsztuczki, choć byłoby to bardziej skomplikowane.
/home/$USER/tmp/adb.log
/tmp/adb.log, a nawet zamontować własny prywatny plik/tmp. zrobićman unshareiman namespacesiman nsenter.