Saya mencoba menjalankan ADB pada server linux dengan banyak pengguna di mana saya tidak melakukan root (untuk bermain dengan emulator android saya). Adb daemon menulis log-nya ke file /tmp/adb.logyang sayangnya tampaknya sulit dikodekan ke dalam ADB dan situasi ini tidak akan berubah .
Jadi, adb gagal untuk dijalankan, memberikan kesalahan yang jelas: cannot open '/tmp/adb.log': Permission denied. File ini dibuat oleh pengguna lain dan /tmpsedikit lengket. Jika saya memulai adb dengan adb nodaemon servermembuatnya menulis ke stdout, tidak ada kesalahan terjadi (saya juga mengatur port-nya ke nilai unik untuk menghindari konflik).
Pertanyaan saya adalah: adakah cara untuk membuat ADB menulis ke file lain /tmp/adb.log? Secara umum, adakah cara untuk membuat semacam symlink khusus proses? Saya ingin mengalihkan semua akses file /tmp/adb.logke, katakanlah, file ~/tmp/adb.log.
Sekali lagi, saya tidak melakukan root pada server, jadi chroot, mount -o rbinddan chmodbukan opsi yang valid. Jika memungkinkan, saya ingin tidak memodifikasi sumber ADB, tetapi tentu saja jika tidak ada solusi lain, saya akan melakukannya.
PS Untuk kasus ADB spesifik saya bisa resor untuk berjalan adb nodaemon serverdengan nohupdan output redirection, tapi pertanyaan umum masih relevan.
LD_PRELOADtrik, meski itu akan lebih rumit.
/home/$USER/tmp/adb.logdan membangun kembali adb :)
/tmp/adb.log, atau bahkan me-mount privasinya sendiri/tmp. lakukanman unsharedanman namespacesdanman nsenter.