我写了一个 bash 脚本,它使用 nice、renice 和 oom 优先级(可选),定期对应用程序进行防弹,它检查应用程序是否运行 renices 它,下次运行时 nices 它,但是有错误和因为我是 bash 脚本的新手,所以我需要一些帮助,这是针对运行 Gingerbread 的索尼爱立信 xperia x10,但除了应用程序名称之外,所有命令都是标准的 busybox 命令
#!/system/bin/sh
#prioritizer script version 2
while true
do
phoneid='pidof com.android.phone';
if[ $phoneid ]
then
renice -17 $phoneid ;
#/system/xbin/echo "-17" > /proc/$phoneid/oom_adj;
else
nice --17 'com.android.phone' ;
fi
hid='pidof com.sonyericsson.home';
if[ $hid ]
then
renice -18 $hid ;
#/system/xbin/echo "-18" > /proc/$hid/oom_adj;
else
nice --17 'com.sonyericsson.home' ;
fi
supid='pidof com.noshufou.android.su';
if[ $supid ]
then
renice -17 $supid ;
#/system/xbin/echo "-17" > /proc/$supid/oom_adj;
else
nice --17 'com.noshufou.android.su';
fi
renice -17 'pidof com.android.mms'
renice -14 'pidof com.sonyericsson.music'
renice -17 'pidof android.process.media'
renice -16 'pidof mediaserver'
renice 5 'pidof com.google.process.gapps'
renice 5 'pidof com.Google.android.apps.uploader '
sleep 1000
done
exit 0
如果您能找到错误或给我一个好的脚本指南,我将不胜感激
最佳答案
在 shell 中没有像 这样的语句。每个 if[
if
之后都需要一个空格。
另外,之后:
phoneid='pidof com.android.phone'
您的变量文本中有:“pidof com.android.phone”,而不是该命令的输出。您需要使用 `command param ...`
或(最好)$(command param ...)
语法。
记得检查你的 shell 语法:
/bin/sh -n myscript.sh
上面的命令(在您的 PC 上运行)不会尝试运行脚本,只是检查语法。
此外,您有很多不需要的分号,但这不会使您的脚本失败。
关于android - 我如何摆脱错误(我的脚本有什么问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782935/