루트가 아닌 여러 사용자가있는 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
.