【问题标题】:adb shell su -c command throws Permission Denied (My phone is rooted)adb shell su -c 命令抛出权限被拒绝(我的手机已经root)
【发布时间】:2022-01-21 07:57:37
【问题描述】:

首先,我正在用我的根手机 Galaxy A12 试验 DVFS。不过,如果我在 adb shell 中使用命令,那么它不会抛出 Permission Denied

~$ adb shell
a12:/ $ su
a12:/ # echo 500000 > sys/kernel/gpu/gpu_max_clock
a12:/ #

但是,当我在带有adb shell su -c 的 android 内核之外使用此命令时,它会抛出 Permission denied

~$ adb shell su -c "echo 680000 > sys/kernel/gpu/gpu_max_clock"
/system/bin/sh: can't create sys/kernel/gpu/gpu_max_clock: Permission denied

我尝试了一些类似下面的命令,但是这些命令抛出了同样的问题。

adb shell su -c "chmod 755 sys/kernel/gpu/gpu_max_clock && echo 680000 > sys/kernel/gpu/gpu_max_clock"
adb shell su -c "chmod 777 sys/kernel/gpu/gpu_max_clock && echo 680000 > sys/kernel/gpu/gpu_max_clock"

我该如何处理这种情况?

【问题讨论】:

    标签: android shell adb


    【解决方案1】:

    Shell 终端不会抛出任何异常,而且您的命令行错误 - 路径也是:

    adb shell "su -c 'echo 680000 > /sys/kernel/gpu/gpu_max_clock'"
    

    当您对自己在做什么一无所知时,您最终可能会遇到一个有缺陷的 GPU。 最好先研究最大值 - 当它冒烟时,这是你自己的错,不是我的。

    任何理智的人都可能首先阅读原始时钟速度:

    cat /sys/kernel/gpu/gpu_max_clock
    

    只有这样才能看到原始时钟速度680000 的百分之几。 当付出太多时,这将导致过热和随机崩溃……除非同时降低电压。到目前为止,这并不像您想象的那么容易......而且也没有可用的主动冷却。

    【讨论】:

    • 我看了你的回答,所以我想起了一个有效的答案。在此之前,您的答案并不相同。顺便说一句,工作解决方案是adb shell "su -c 'echo 680000 > /sys/kernel/gpu/gpu_max_clock'" 谢谢你的智慧!
    【解决方案2】:

    您的命令行错误。试试这个。

    adb shell "su -c 'echo 680000 > /sys/kernel/gpu/gpu_max_clock'"
    

    adb shell "su -c 'chmod 777 /sys/kernel/gpu/gpu_max_clock && echo 680000 > /sys/kernel/gpu/gpu_max_clock'"
    

    【讨论】: