仅当它是特定程序/进程时才杀死 pid

仅当它是特定程序/进程时才杀死 pid

假设我们有一个 PID 号码,ONE bash command如果它是特定的程序,我该如何写入来杀死它?

例如,假设我们有一个 pid 号20000我只想在它是 FFmpeg 进程时终止该 PID

答案1

我认为你不能用一个 bash 命令来完成这个任务。

您可以使用附言命令返回具有指定 PID 的进程名称。特别是开关-p <pid>很有用,-o它允许您指定进程参数列表,例如 ppid、pmem 等。这里特别有用的是-o comm指示 ps 返回command。很容易将-p <pid>和组合起来-o comm以仅返回指定的命令<pid>。您可能也会发现--no-header这里的开关很有用。

好的,现在您已经使用 ps 返回带有 PID 的进程的命令名称,<pid>您需要做的就是将其与之进行比较FFmpeg并发出 kill 命令。

这些都是相当简单的东西,所以现在你已经有了一些指点,我将把它留作你的教育练习。

答案2

我认为您可以直接使用 killall 命令写入进程名称。

杀死ffmpeg

答案3

ps -f -p 20000 | grep ffmpeg > /dev/null && echo kill 20000

echo在最终版本中删除

  • ps-f-p 20000

    显示来自 PID 20000 的过程数据

  • grep ffmpeg > /dev/null

    查找字符串中是否ps包含字符串ffmpeg。如果未找到字符串,则返回不等于 0 的返回代码。> /dev/null忽略打印输出。

  • && 回显杀死 20000

    &&仅当上一个命令的返回代码为 0 时才执行以下命令。因此,仅当在 grep 中找到20000子字符串时才执行 killffmpeg

相关内容