SHELL指令碼專案例項(一)

2021-10-03 08:00:27 字數 3180 閱讀 8993

指令碼基本實現邏輯為:重啟開關機去判斷是否識別到tp模組的vid pid和檢測egtouchd的服務是否跑起來,

如果有識別到裝置並且服務有跑起來,則列印一次字串detecte_success到建立的檔案sdcard/det_usb_egtouchd.log中,最後統計當前測試的重啟次數,然後執行重啟操作;

如果識別不到或者服務沒起來,則列印字串detecte_fail到建立的檔案sdcard/det_usb_egtouchd.log中,並且列印當前裝置的dmesg和logcat到當前時間下建立的sdcard/***x.log檔案中,

最後統計當前測試的重啟次數,然後執行重啟操作。

後續可以通過檢視sdcard/det_usb_egtouchd.log知道指令碼執行的測試結果。

具體操作說明:

然後執行以下:

1、把usbtp_det.s**件push 進入system/bin/目錄:

c:\users\administrator>adb root

c:\users\administrator>adb remount

c:\users\administrator>adb push usbtp_det.sh system/bin/

c:\users\administrator>adb shell chmod 755 system/bin/usbtp_det.sh

c:\users\administrator>adb shell sync

2、在system/bin/lowmem_manage.sh 加入以下指令,注意加在檔案最後一行,要在機器起來之後再去執行指令碼:

source usbtp_det.sh

然後重啟機器即可進入自動開關機測試tp的概率性失效問題。

如果需要停止測試,需要在重啟之前拔掉tp裝置,並且在開機起來後2分鐘內檢視在sdcard目錄對應的測試記錄檔案

det_usb_egtouchd.log或者把它pull出來檢視,或者注釋掉lowmem_manage.sh中的source usbtp_det.sh來停止測試。

【包括測試次數記錄檔案:det_usb_egtouchd.log和dmesg、logcat的log檔案等】

注意:檢測裝置或者服務失敗才會去抓取對應log的列印,檢測成功則無log列印檔案生成。

#!

/bin/bash

d_name=sdcard/det_usb_egtouchd.log

detecte_success=detecte_success

detecte_fail=detecte_fail

date=`date +

%y-%m-

%d_%h_%m_%s`

dmesg_log=dmesg

logcat_log=logcat

input_log=cat_input

#create file to writeif[

!-f "$d_name"

]; then

echo "log file will creat."

touch $

else

echo "log file already exists."

fi#retry 5

count=

0while

[[ $count -lt 5]]

dolet count++

#service detectionif[

"$(lsusb |grep 0eef:c000)"]&&

["$(ps | grep egtouchd |wc -l)"

-eq "1"

]; then

echo "current tp driver and service egtouchd startup success."

setprop persist.sys.tp.logprint 0

sleep 1

break

else

echo "current tp driver and service egtouchd startup failed."

setprop persist.sys.tp.logprint 1

sleep 1

fidone

#print log

gtdetecte_tp=`getprop persist.sys.tp.logprint`if[

"$gtdetecte_tp"

!="0"

]; then

sleep 110

echo "$"

echo $detecte_fail >> $

dmesg >> sdcard/$_$

.log &

logcat -v time >> sdcard/$_$

.log &

cat proc/bus/input/devices >> sdcard/$_$

.log &

else

sleep 5

echo "$"

echo $detecte_success >> $

fi#count

ops_number=$(grep -nr "detecte" $

| wc -l)

#ops_number=$(cat $ | grep "detecte" | wc -l)

echo "********************"

>> $

echo "count current restarts..."

echo "current test times"

>> $

echo $ops_number >> $

echo "********************"

>> $

#setting reboot ops

setprop persist.sys.tp.reboot 1

gtdetecte_reboot=`getprop persist.sys.tp.reboot`if[

"$gtdetecte_reboot"

!="0"

]; then

echo "5s after will reboot."

sleep 5

reboot

else

echo "no reboot."

sleep 5

fi

shell指令碼例項

1.批量建立10個系統賬號test01 test10,並隨機設定8位數密碼 bin bash for i in seq w 10 do useradd test i echo random madsum cut c 8 tee a passwd.txt stdin test i done 2.在目錄...

Shell 指令碼例項

指令碼內容如下 bin bash action 定義函式,進行操作指南 action 1 database mysql uroot p 1 en e show databases grep e schema v mkdir p mnt sqldump e database name sql case...

Shell指令碼例項

1.寫乙個指令碼,利用迴圈計算10的階乘 bin sh factorial 1 for a in seq 1 10 dofactorial expr factorial a done echo 10 factorial 注 上面有一行,for a in seq 1 10 其中seq 1 10 即列出...