Ben kök değilim (android emülatör ile oynamak için) birden çok kullanıcı ile bir linux sunucu üzerinde ADB çalıştırmak çalışıyorum. Adb arka plan programı günlüklerini /tmp/adb.logmaalesef ADB'ye kodlanmış gibi görünüyor ve bu durum değişmeyecek şekilde dosyaya yazıyor .
Yani, adb, kaçak başarısız bariz hatayı veriyor: cannot open '/tmp/adb.log': Permission denied. Bu dosya başka bir kullanıcı tarafından oluşturulmuş ve /tmpüzerinde yapışkan bit var. Adb'yi adb nodaemon serverstdout'a yazarak başlatırsam hata oluşmaz (çakışmalardan kaçınmak için bağlantı noktasını benzersiz bir değere de ayarladım).
Benim sorum: ADB'den başka bir dosyaya yazmanın bir yolu var /tmp/adb.logmı? Daha genel olarak, sürece özgü bir sembolik bağlantı oluşturmanın bir yolu var mı? Ben tüm dosya erişimlerini yönlendirmek istiyorum /tmp/adb.log, bir dosya söyleyerek için ~/tmp/adb.log.
Yine, ben sunucu kök değilim, bu yüzden chroot, mount -o rbindve chmodgeçerli seçenekler değildir. Mümkünse, ADB kaynaklarını değiştirmek istemiyorum, ancak elbette başka çözüm yoksa bunu yapacağım.
PS özgü ADB durum için ben çalışan çare olabilir adb nodaemon serverile nohupve çıkış yönlendirme, ama genel bir soru hala geçerlidir.
LD_PRELOADhileler var, ama bu daha karmaşık olurdu.
/home/$USER/tmp/adb.logadb sabit
/tmp/adb.logbağlayabilir, hatta kendi özel dosyasını da bağlayabilirsiniz/tmp. yapmakman unshareveman namespacesveman nsenter.