ルートではない(Androidエミュレーターでプレイする)複数のユーザーがいるLinuxサーバーでADBを実行しようとしています。adbデーモンはそのログをファイルに書き込みます/tmp/adb.log
が、残念ながらADBにハードコードされているようで、この状況は変わりません。
そのため、adbは実行に失敗し、明らかなエラーが発生しますcannot open '/tmp/adb.log': Permission denied
。このファイルは別のユーザーによって作成され、/tmp
スティッキービットがオンになっています。adb nodaemon server
stdoutに書き込むようにしてadbを開始しても、エラーは発生しません(競合を回避するために、ポートを一意の値に設定します)。
私の質問は、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
。