Я создал три сценария удара для дампа нескольких процессов, который работает в устройстве на базе Android. Первый сценарий удара:
#!/bin/bash
echo "adb forward tcp:8888 tcp:8888"
adb forward tcp:8888 tcp:8888
exec $SHELL
Второй сценарий удара:
#!/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 для дампа других выбранных процессов?
Можно заставить каждый сценарий принять, что 2 параметра, порт используют и изодромное с предварением для использования. Тогда выполните их с отличающимися портами и pids. Например, если первый сценарий называют 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
в конце каждого сценария. Вы уверены, что Вам нужен он?