【问题标题】:Android killing Process using only PS and GREP in shell scriptAndroid 在 shell 脚本中仅使用 PS 和 GREP 杀死进程
【发布时间】:2013-12-02 05:50:02
【问题描述】:

我真的需要帮助... 我正在编写一个 shell 脚本,它启动一个进程,然后每 10 秒杀死它一次,然后再次重新启动它。

我知道使用“ps”命令将显示所有正在运行的进程,您可以通过运行“kill [pid]”来终止它。 但是,获取我正在启动的进程的 PID 并不容易。

我到处寻找,但由于某种原因,我无法使用 pgrep、awk、xargs、pidof 之类的函数......只是找不到它们......

我只能想到一种方法,我必须输出 ps 文件,然后解析它并单独获取 PID.. 但这似乎太多了......

谁能帮助我?我想我只限于使用 ps 和 grep...

我正在通过运行启动电话应用程序 我开始 -a android.intent.action.CALL -d 电话:XXX-XXX-XXXX 然后通过运行 'ps m.android.phone' 我可以使用 kill [PID] 停止呼叫

我也尝试过运行类似的命令 pm clear com.android.phone, adb shell am force-stop com.android.phone 但他们都不会停止通话......

请帮忙 非常感谢!

【问题讨论】:

  • 通过运行 BODY=$(ps m.android.phone), echo "${BODY}",它会打印 PID 和手机应用程序的所有内容。有没有可以解析 PID 本身并将其保存到变量的命令?

标签: android linux awk kill ps


【解决方案1】:

使用

am kill package-name

am force-stop package-name

将 package-name 替换为您要杀死的应用程序的名称。

【讨论】:

  • 我之前都尝试过使用...出于某种原因,它们都没有真正结束通话...
【解决方案2】:

如果你知道应用程序的进程名,那么我封装了一个非常快速而肮脏的脚本来解析进程的PID:

ps -u $(whoami) | grep firefox | awk '{printf $1}'

您显然应该将 firefox 替换为您选择的进程名称。

请注意,我不是该领域的专家,但它对我有用。

【讨论】:

  • whoamiawk 在 Android 上默认不可用。
  • @chrkad 啊我不知道。
【解决方案3】:

你可以试试命令pidof直接获取进程id,eks:

pidof apashe2

【讨论】:

  • pidof 在 Android 上默认不可用。
  • 就像我上面提到的,我无法单独使用 pgrep、pidof 或 awk 函数来获取 PID...
【解决方案4】:

按照马库斯所说的:

adb shell kill -9 $(adb shell ps | grep firefox | awk '{print $1}')

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 2012-09-30
    • 2012-10-11
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多