最有用的研究是去研究那些与你的工作相关的事情,尤其是一些类似的工作。无论你正在干什么,你其实都会找到这样的机会,那就是总有什么人在什么地方干过与你相似的事情,从别人的成功和教训当中去研究,学习别人的经验而规避别人的教训,这对于你未来的工作是非常有帮助的。
——摘自《麦肯锡思维与工作法》第二章 分析准确,问题就解决了一半
./build/tools/releasetools/ota_from_target_files --block -k build/target/product/security/testkey -i ../release-HS_KR_HV10_SV02_171030/mota.zip ../release-HS_KR_HV10_SV03_171106/mota.zip update.zip
md5sum -b update.zip
echo md5数值 > md5sum
zip package.zip md5sum update.zip
适用于MT6735:
./build/tools/releasetools/ota_from_target_files -v --block -k build/target/product/security/testkey -s device/mediatek/build/releasetools/mt_ota_from_target_files -i old new update.zip
例如:
./build/tools/releasetools/ota_from_target_files -v --block -k build/target/product/security/testkey -s device/mediatek/build/releasetools/mt_ota_from_target_files -i /home/wzh/bak/bak_data/bins/V118/SV52_0929/full_V118_35_66_m0-target_files-1506699026.zip release-v118_ABR_CN_HV30_SV56_171201/mota.zip update.zip
适用于MT6739:
./build/tools/releasetools/ota_from_target_files -s vendor/mediatek/proprietary/scripts/releasetools/mt_ota_from_target_files.py -i old new update.zip
例如:
./build/tools/releasetools/ota_from_target_files -s vendor/mediatek/proprietary/scripts/releasetools/mt_ota_from_target_files.py -i release-M30_ABR_CN_HV33_SV62_191214/full_abr6739_T3_64_go-target_files-1576296825.zip release-M30_ABR_CN_HV33_SV62_191218/full_abr6739_T3_64_go-target_files-1576641931.zip update.zip
adb push update.zip /data/data/com.mediatek.systemupdate/system_update/update.zip
adb shell "mkdir /cache/recovery"
adb shell "echo --update_package=/data/data/com.mediatek.systemupdate/system_update/update.zip > /cache/recovery/command"
adb shell "reboot recovery"
adb shell cat /proc/kmsg
adb shell cat /proc/kmsg > e:\123.txt
adb pull /sdcard/**.txt D:\
export PATH=$PATH:/home/extend/wff/a13_sdk4.0/lichee/buildroot/output/external-toolchain/bin
export PATH=$PATH:/home/wff/wff_extend/a10_sdk4.0/lichee/buildroot/output/external-toolchain/bin
logcat|grep "gps_oem"
或者
adb shell
root@android:/ # logcat | busybox grep "gps_oem"
查看系统进程占用内存信息:
adb shell top -m 5
find ./ -name *.h |xargs grep -n2 "gpio_write_one_pin_value" --color
tar -xzvf drivers/misc/dm201.tar.gz -C drivers/misc/
adb logcat -b radio -v time
stop ril-daemon
start ril-daemon
gsmmux -p /dev/ttyS5 -b 115200 -s /dev/mux -w /dev/ptmx /dev/ptmx
busybox killall -15 gsmmux
# echo -e "AT+CSQ\r" > /dev/ttyS2
# echo -e "ATS24=0\r" > /dev/mux1
adb shell
root@wing-cdr:/ # ping 8.8.8.8
root@android:/ # getevent -p /dev/input/event2
getevent -p /dev/input/event2
add device 1: /dev/input/event2
name: "ft5x_ts"
events:
KEY (0001): 014a
ABS (0003): 0030 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
0032 : value 0, min 0, max 200, fuzz 0, flat 0, resolution 0
0035 : value 0, min 0, max 800, fuzz 0, flat 0, resolution 0
0036 : value 0, min 0, max 480, fuzz 0, flat 0, resolution 0
0039 : value 0, min 0, max 4, fuzz 0, flat 0, resolution 0
input props:
adb shell pm list packages
结果(节选):
package:com.dx.launcher.activity
package:com.dx.radardetection
adb shell pm path com.dx.launcher.activity
package:/system/app/DX_LauncherX5E.apk
adb shell pm path com.dx.radardetection
package:/data/app/com.dx.radardetection-2.apk
adb pull /data/app/com.dx.radardetection-2.apk f:\
aapt d badging X:\8801_android4.0\android4.0\out\target\product\crane-cvr\system\app\DX_LauncherX5E.apk
解析结果(节选):
package: name='com.dx.launcher.activity' versionCode='1' versionName='1.0'
application-label:'DX_Launcher02'
(命令启动apk的关键信息)
launchable-activity: name='com.dx.launcher.activity.MainActivity' label='DX_Launcher02'
locales: '--_--' 'zh_CN'
densities: '160'
adb install F:\com.dx.radardetection-2.apk
adb shell
am start -n com.dx.launcher.activity/.MainActivity
am start -n com.dx.radardetection/.DetectionActivity
adb uninstall com.dx.radardetection
zip -q -r html.zip /home/Blinux/html
tar cjf - logs/ |split -b 1024m - logs.tar.bz2.
cat logs.tar.bz2.a* | tar xj
e.g. cat ${customer_project}_INHOUSE.tar.gz* | tar zxf -
将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一 个gzip压缩过的包,命名为jpg.tar.gz
tar –czf jpg.tar.gz *.jpg
将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cjf jpg.tar.bz2 *.jpg
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
1、解压到当前文件夹
输入:tar zxvf 文件名.tgz -C ./ 比如我的是:tar zxvf simple-examples.tgz -C ./
2、解压到指定文件夹下
输入:tar zxvf 文件名.tgz -C /指定路径
比如我想解压到Home下:则变成tar zxvf simple-examples.tgz -C /Home
adb nodaemon server
显示:cannot bind 'tcp:5037'
netstat -ano | findstr "5037"
显示:TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 6284
tasklist /fi "pid eq 6284
显示:
图像名 PID 会话名 会话# 内存使用
========================= ====== ================ ======== ============
sjk_daemon.exe 6284 Console 0 4,536 K
chown -R xxx:ddd dir
例如:
sudo chown -R user_1:user_1 user_1/
vim /etc/passwd
vim /etc/shadow
groupmod -n new_username old_username
groupmod命令用来修改组相关信息,-n用来指定新的组名,用原来的组名作为参数。这里修改的是与用户默认同名的组。
usermod -l new_username -d /home/new_username -m old_username
用usermod命令来修改用户帐户相关信息,-l指定新的登录名称,-d指定新的主目录,如果同时指定-m选项则移动原来用户主目录的内容到新的用户住目录,最后指定原来的登录用户名。
chfn -f new_fullname new_username
chfn命令来修改真实的用户名称和其他相关信息,-f指定新的用户全称,需要修改全称的用户名作为参数
sudo ifconfig eth0 down
sudo ifconfig eth0 up
sudo /etc/init.d/networking restart
patch -bp1 < xxx.patch
参数-b是为了生成一个.orig后缀的备份文件
patch -Rp1 < xxx.patch
需要在打完xxx.patch补丁的基础上执行
在CMD窗口中运行如下命令可以打开当前运行的路径
C:\Users\Administrator> start .
ls -l /dev/disk/by-uuid
sudo useradd -m -d /home/user001 -s /bin/bash user001
sudo passwd user001
sudo smbpasswd -a user001
sudo vim /etc/samba/smb.conf
sudo service smbd restart
nohup 你的shell命令 &
例子:
nohup make -j24 &
该命令的一般形式为:nohup command &
使用nohup命令提交作业
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
在上面的例子中,输出被重定向到myout.file文件中。
使用 jobs 查看任务。
使用 fg %n 关闭。
例如:
nohup ./test-pack_add_userdebug.sh > myout.file 2>&1 &
jobs //只能在当前窗口未关闭的状态下有效
[1]+ 运行中 nohup ./test-pack_add_userdebug.sh > myout.file 2>&1 &
fg %1 //将1号任务调到前台运行,想关闭可以接着运行Ctrl+c
ps -ef | grep make //当窗口关闭后,可以执行此命令查看nohup的编译任务
UID PID PPID C STIME TTY TIME CMD
root 18887 18828 0 08:09 pts/0 00:00:00 grep ApacheJetspeed
然后kill -9 +对应的PID
nohup sudo shutdown -h 23:00
拷贝远程服务器的代码到本地:
以拷贝192.168.3.175服务器上的/home/wff_1/A20_linux目录为例:
scp -P22 -r [email protected]:/home/wff_1/A20_linux /home/extend/wff_2/
如果需要在后台运行则使用下面的方法:
注意末尾不用加&
[mars@gms03 build]$ nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data
nohup: appending output to `nohup.out'
Password:
输入密码后按:ctrl+z
[1]+ Stopped nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data
然后紧接着输入:
[mars@gms03 build]$ bg
上述命令便又能在后台恢复运行了
[1]+ nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data
#以拷贝192.168.3.175服务器上的/home/wff_1/A20_linux目录为例:
使用scp传输大文件
注意末尾不用加&
[mars@gms03 build]$ nohup scp -P22 -r [email protected]:/home/wff_1/A20_linux /home/extend/wff_2/
nohup: appending output to `nohup.out'
Password:
输入密码后按:ctrl+z
[1]+ Stopped nohup scp -P22 -r [email protected]:/home/wff_1/A20_linux /home/extend/wff_2/
然后紧接着输入:
[mars@gms03 build]$ bg
上述命令便又能在后台恢复运行了
[1]+ nohup scp -P22 -r [email protected]:/home/wff_1/A20_linux /home/extend/wff_2/
ln -s a b //其中a是源文件名,b是连接文件名
rm -rf b
//注意不是 rm -rf b/
ln a b
make systemimage-nodeps
#替换每一行的第一个a
:%s/a/b/
#全部替换
:%s/a/b/g
#替换/时需要转义"\/"
make –j24 2>&1 |tee build.log
返回最近24小时内修改过的文件:
find ./ -mtime 0
查找最近30分钟修改的当前目录下的.php文件
find . -name '*.php' -mmin -30
查找最近24小时修改的当前目录下的.php文件
find . -name '*.php' -mtime 0
查找最近24小时修改的当前目录下的.php文件,并列出详细信息
find . -name '*.inc' -mtime 0 -ls
查找当前目录下,最近24-48小时修改过的常规文件。
find . -type f -mtime 1
查找当前目录下,最近1天前修改过的常规文件。
find . -type f -mtime +1
history
history -w history.txt
cp --parents parentdir1/parentdir2/sourcefile destdir/
这样拷贝的时候,会在目标路径中创建源文件参数中的所有父目录层级(不止是一层父目录),然后将源文件拷贝进去。
#!/bin/bash
begintime=`date -d -1hour +%T`
echo $begintime
endtime=`date +%T`
echo $endtime
find -name '*.jpg' -newermt $begintime ! -newermt $endtime
例子:
find -name '*' -newermt 01:28:49 ! -newermt 03:28:49
arp -a
rsync -a --exclude=.git --exclude=.repo /extend01/ssd/MT8735_repo_extend01 ./
"--exclude"排除规则
使用"--exclude"选项指定排除规则,排除那些不需要传输的文件。
[root@xuexi tmp]# rsync -r -v --exclude="anaconda/*.log" /var/log/anaconda /var/log/audit /tmp
sending incremental file list
anaconda/
anaconda/syslog
audit/
audit/audit.log
sent 3365629 bytes received 58 bytes 6731374.00 bytes/sec
total size is 3365016 speedup is 1.00
上例中只排除了anaconda目录中的log文件,但是audit目录中的log文件是正常传输的。
注意,一个"--exclude"只能指定一条规则,要指定多条排除规则,需要使用多个"--exclude"选项,或者将排除规则写入到文件中,然后使用"--exclude-from"选项读取该规则文件。
另外,除了"--exclude"排除规则,还有"--include"包含规则,顾名思义,它就是筛选出要进行传输的文件,所以include规则也称为传输规则。它的使用方法和"--exclude"一样。如果一个文件即能匹配排除规则,又能匹配包含规则,则先匹配到的立即生效,生效后就不再进行任何匹配。