找到正在运行的进程的PID并将其存储为数组

use*_*401 8 linux arrays bash

我正在尝试编写一个bash脚本来查找正在运行的进程的PID然后发出kill命令.我有部分工作,但我面临的问题是可能有多个进程在运行.我想对找到的每个PID发出一个kill命令.

我认为我需要将每个PID放入一个数组中,但是如何做到这一点却不知所措.

到目前为止我所拥有的:

pid=$(ps -fe | grep '[p]rocess' | awk '{print $2}')
if [[ -n $pid ]]; then
    echo $pid
    #kill $pid
else
echo "Does not exist"
fi
Run Code Online (Sandbox Code Playgroud)

这将做什么是在一行返回所有PID,但我无法弄清楚如何将其拆分为数组.

Spa*_*son 21

这是一个可能有帮助的小衬垫

for pid in `ps -ef | grep your_search_term | awk '{print $2}'` ; do kill $pid ; done
Run Code Online (Sandbox Code Playgroud)

只需将your_search_term替换为要杀死的进程名称即可.

你也可以将它变成一个脚本,并交换your_search_term$ 1

编辑:我想我应该解释一下这是如何工作的.

后面的滴答声``收集它里面表达式的输出.在这种情况下,它将返回进程名称的pid列表.

使用for循环,我们可以迭代每个pid并终止进程.

EDIT2:用kill替换kill -9

  • 除非你知道进程可能会整齐地失败,否则不要"杀死-9". (2认同)