Я пытаюсь запустить ADB на сервере Linux с несколькими пользователями, где я не являюсь пользователем root (чтобы играть с моим эмулятором Android). Демон adb записывает свои логи в файл, /tmp/adb.logкоторый, к сожалению, жестко запрограммирован в ADB, и эта ситуация не изменится .
Таким образом, ADB не в состоянии бежать, давая очевидную ошибку: cannot open '/tmp/adb.log': Permission denied. Этот файл создан другим пользователем и /tmpимеет прикрепленный бит. Если я начну adb с adb nodaemon serverзаписи в stdout, ошибок не будет (я также установил для его порта уникальное значение, чтобы избежать конфликтов).
Мой вопрос: есть ли способ заставить ADB записать в другой файл, чем /tmp/adb.log? В более общем смысле, есть ли способ создать своего рода символьную ссылку для конкретного процесса? Я хочу перенаправить все обращения к файлам /tmp/adb.log, скажем, к файлу ~/tmp/adb.log.
Опять же , я не корень на сервере, поэтому chroot, mount -o rbindи chmodне являются допустимыми вариантами. Если возможно, я бы не хотел изменять источники ADB, но, конечно, если других решений нет, я сделаю это.
PS Для конкретного случая ADB я могу прибегнуть к работе adb nodaemon serverс nohupперенаправлением вывода и выводу, но общий вопрос все еще актуален.
LD_PRELOADхитрости, хотя это будет сложнее.
/home/$USER/tmp/adb.logи перестроить adb :)
/tmp/adb.log, или даже смонтировать его собственный приватный файл/tmp. делайman unshareиman namespacesиman nsenter.