我编写了一个使用nice,renice和oom优先级(可选)的bash脚本,定期对应用程序进行防弹,它会检查应用程序是否在运行时将其重新定位,将其用于下次运行,但是有bug和因为我是bash脚本的新手我需要一些帮助,这是一个运行姜饼的索尼爱立信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
如果你能找到错误或给我一个好的脚本指南,我会很感激
答案 0 :(得分:1)
在shell中没有 这样的陈述。每个if[
if
后都需要一个空格。
此外,在:
之后phoneid='pidof com.android.phone'
你的变量文本中有:“ pidof com.android.phone ”而不是该命令的输出。您需要使用`command param ...`
或(最好)$(command param ...)
语法。
请记住用以下方法检查shell语法:
/bin/sh -n myscript.sh
上面的命令(在您的PC上运行)不会尝试运行脚本,只需检查语法。
此外,你有很多不需要的分号,但这不会使你的脚本失败。