我创建了三个 bash 脚本,用于转储 Android 设备中运行的几个进程。第一个 bash 脚本:
#!/bin/bash
echo "adb forward tcp:8888 tcp:8888"
adb forward tcp:8888 tcp:8888
exec $SHELL
第二个 bash 脚本:
#!/bin/bash
echo "acquire the process with mem tool"
adb shell "
/dev/examiner/mem 797 | /dev/examiner/nc -l -p 8888
"
exec $SHELL
第三个脚本:
#!/bin/bash
echo "dump the selected process"
nc 127.0.0.1 8888 > ~/work_folder/bin/797_surface_flinger.bin
exec $SHELL
例如,我有 3 个正在运行的进程:PID 797、PID 1025 和 PID 2020,我想转储它们。有什么办法可以改进第二个和第三个脚本,而无需手动更改所选 PID 编号以转储其他选定的进程?
答案1
您可以让每个脚本接受 2 个参数,即要使用的端口和要使用的 pid。然后使用不同的端口和 pid 运行它们。例如,如果调用第一个脚本,script1
那么您可以运行
script1 8888 797
script1 8887 1025
script1 8886 2020
以下是使用 2 个参数的脚本。
#!/bin/bash
port=${1?} pid=${2?}
echo "adb forward tcp:$port tcp:$port"
adb forward tcp:$port tcp:$port
#!/bin/bash
port=${1?} pid=${2?}
echo "acquire the process with mem tool"
adb shell "
/dev/examiner/mem $pid | /dev/examiner/nc -l -p $port
"
#!/bin/bash
port=${1?} pid=${2?}
echo "dump the selected process"
nc 127.0.0.1 $port > ~/work_folder/bin/${pid}_surface_flinger.bin
exec $SHELL
我不知道为什么每个脚本末尾都有这个。你确定需要它吗?