如果想关闭电脑,后台编译,可以使用如下第一点和第二点:
1. nohup、&
关闭终端,会触发SIGHUP信号,通过nohup来忽略这个信号,通过"&"把命令放到后台执行,使用方式:
nohup <Command> [Arg] &
执行上述命令后,需要多敲一次回车键,让命令回到后台,可以通过jobs命令来查看当前放到后台的命令,fg将后台中的命令调至前台继续运行,bg将一个在后台暂停的命令,变成继续执行
如果后台有多个命令,可以用fg/bg %jobnumber将命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号。
2. screen
Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。
使用方式:
直接在终端执行screen,会创建一个执行shell的全屏窗口,使用exit命令退出。使用方式:
screen -dmS <screen-name> <Command>
执行上述命令后,会创建一个状态为detached的screen会话,执行对应的Command,screen-name为这个会话的名字,也可以不用S参数,不指定会话名字。
只要不杀掉这个screen会话就可以一直在后台运行,可以使用screen -ls查看已创建的screen,使用screen -r <screen_pid>可以恢复,进入到这个screen会话。
参考链接:screen使用_大大大zzc的博客-优快云博客_screen
3. git push
3.1 代码提交遇到failed to push some refs to...的报错处理方式:
先git pull --rebase origin master后再进行相关提交操作,具体参考https://blog.youkuaiyun.com/mbuger/article/details/70197532
3.2 代码提交遇到error Missing tree报错的处理方式:
提交时添加--no-thin参数,具体参考[积累] git 出现 error Missing tree 的处理办法__Lyux的博客-优快云博客_git missing tree
4. adb
使用adb push等命令时出现Unable to start adb server: error: protocol fault (couldn't read status): Connection reset by peer等相关报错时,可以使用给下面的方式来解决:
问题原因:
大多数情况是5037端口被占用。5037为adb默认端口。
解决办法:查看哪个程序占用了adb端口,结束这个程序,然后重启adb就好了。
- 使用命令:netstat -aon|findstr "5037" 找到占用5037端口的进程PID。
- 使用命令:tasklist|findstr "5440" 通过PID找出进程。
- 调出任务管理器,找到这个进程,结束进程。
- 使用命令:adb start-server 启动adb就行了
5. jack server编译报错处理
export JACK_SERVER=false
export JACK_REPOSITORY=$PWD/prebuilts/sdk/tools/jacks
在项目主目录执行完上述两条命令,然后再执行make命令
6. 跳过开机向导命令(eng)
adb shell pm disable com.google.android.setupwizard
7. OTA差分包命令
./build/tools/releasetools/ota_from_target_files -k vendor/infinix_common/security/releasekey -s vendor/mediatek/proprietary/scripts/releasetools/mt_ota_from_target_files --block -p out/host/linux-x86 -v -i out/target/product/X604_H633/full_X604_H633-target_files-1521509345.zip out/target/product/X604_H633/full_X604_H633-target_files-1521512894.zip update.zip 2>&1 | tee update.log