假设我们有一个 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