J'essaie d'exécuter ADB sur un serveur Linux avec plusieurs utilisateurs où je ne suis pas root (pour jouer avec mon émulateur Android). Le démon adb écrit ses journaux dans le fichier /tmp/adb.logqui semble malheureusement être codé en dur dans ADB et cette situation ne va pas changer .
Donc, adb ne parvient pas à terme, donnant l'erreur évidente: cannot open '/tmp/adb.log': Permission denied. Ce fichier est créé par un autre utilisateur et /tmppossède un bit collant. Si je démarre adb en le adb nodaemon serverfaisant écrire sur stdout, aucune erreur ne se produit (j'ai également configuré son port sur une valeur unique pour éviter les conflits).
Ma question est: existe-t-il un moyen de faire en sorte que la BAD écrive dans un autre fichier que /tmp/adb.log? Plus généralement, existe-t-il un moyen de créer une sorte de lien symbolique spécifique au processus? Je veux rediriger tous les accès aux fichiers /tmp/adb.logvers, en disant, un fichier ~/tmp/adb.log.
Encore une fois, je ne suis pas root sur le serveur, donc chroot, mount -o rbindet ce chmodne sont pas des options valides. Si possible, je ne voudrais pas modifier les sources ADB, mais sûrement s'il n'y a pas d'autres solutions, je le ferai.
PS Pour le cas ADB spécifique, je peux recourir à la redirection adb nodaemon serveravec nohupet avec la sortie, mais la question générale est toujours d'actualité.
LD_PRELOADastuces, mais ce serait plus compliqué.
/home/$USER/tmp/adb.loget de reconstruire adb :)
/tmp/adb.log, ou même monter son propre/tmptout à fait privé . faireman unshareetman namespacesetman nsenter.