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.log
maalesef 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 server
stdout'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.log
mı? 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 rbind
ve chmod
geç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 server
ile nohup
ve çıkış yönlendirme, ama genel bir soru hala geçerlidir.
LD_PRELOAD
hileler var, ama bu daha karmaşık olurdu.
/home/$USER/tmp/adb.log
adb sabit
/tmp/adb.log
bağlayabilir, hatta kendi özel dosyasını da bağlayabilirsiniz/tmp
. yapmakman unshare
veman namespaces
veman nsenter
.