Linux/ADB拼接date与uptime命令:Android设备负载平均值异常求助
问题解决:Android设备Shell脚本拼接date与uptime并修正load average异常
问题根源
你当前的命令中,$(uptime)会被本地Shell提前解析执行,再将结果传递给Android设备的Shell,而非在Android设备上执行uptime命令,这导致load average始终显示异常的0.00数值。同时,date命令的格式参数无法直接嵌入命令替换,这种写法本身不符合date的使用逻辑。
正确实现命令
要让date和uptime都在Android设备的Shell中执行并拼接成一行,可使用以下两种写法:
写法一(推荐,单引号避免本地解析)
adb -s 10.0.0.2:5555 shell 'while true; do echo "$(date '+%a, %b %d %T %Z %Y') $(uptime)"; sleep 1; done'
写法二(双引号转义命令替换)
adb -s 10.0.0.2:5555 shell "while true; do echo \"\$(date '+%a, %b %d %T %Z %Y') \$(uptime)\"; sleep 1; done"
原理说明
- 用单引号包裹整个远端Shell脚本时,本地Shell不会解析其中的
$(...)语法,直接将完整脚本传递给Android设备执行。 - 通过
echo命令将date的输出结果和uptime的输出结果拼接为一行,这是最直接可靠的文本拼接方式,避免了date格式参数的误用。
执行后会每秒输出一行符合要求的内容,包含Android设备的当前时间和完整的运行时长、负载信息。
内容的提问来源于stack exchange,提问作者javier
相关产品推荐
相关产品推荐

