Tôi đang cố gắng chạy ADB trên máy chủ linux có nhiều người dùng mà tôi không root (để chơi với trình giả lập Android của tôi). Trình nền adb ghi nhật ký của nó vào tệp /tmp/adb.log
, điều không may dường như được mã hóa cứng vào ADB và tình huống này sẽ không thay đổi .
Vì vậy, adb không chạy được, đưa ra lỗi rõ ràng : cannot open '/tmp/adb.log': Permission denied
. Tập tin này được tạo bởi một người dùng khác và /tmp
có bit dính trên. Nếu tôi bắt đầu adb bằng adb nodaemon server
cách làm cho nó ghi vào thiết bị xuất chuẩn, sẽ không có lỗi xảy ra (tôi cũng thiết lập cổng của nó thành một giá trị duy nhất để tránh xung đột).
Câu hỏi của tôi là: có cách nào để làm cho ADB ghi vào một tệp khác /tmp/adb.log
không? Tổng quát hơn, có cách nào để tạo ra một loại liên kết tượng trưng cụ thể cho quá trình không? Tôi muốn chuyển hướng tất cả các tệp truy cập /tmp/adb.log
đến, nói, một tệp ~/tmp/adb.log
.
Một lần nữa, tôi không root trên máy chủ, vì vậy chroot
, mount -o rbind
và chmod
không phải là tùy chọn hợp lệ. Nếu có thể, tôi muốn không sửa đổi các nguồn ADB, nhưng chắc chắn nếu không có giải pháp nào khác, tôi sẽ làm điều đó.
PS Đối với trường hợp cụ thể của ADB tôi có thể nghỉ mát để chạy adb nodaemon server
với nohup
và chuyển hướng đầu ra, nhưng câu hỏi chung là vẫn có liên quan.
LD_PRELOAD
mánh khóe, mặc dù điều đó sẽ phức tạp hơn.
/home/$USER/tmp/adb.log
và xây dựng lại adb sẽ dễ dàng hơn :)
/tmp/adb.log
hoặc thậm chí gắn kết riêng tư của nó/tmp
. làmman unshare
vàman namespaces
vàman nsenter
.