linux下如何通过pid杀死进程

Joe*_*ile 7 linux bash command kill process

我是Linux新手,我正在构建一个程序,该程序接收进程的名称,获取其PID(我对这部分没有问题),然后将PID传递给kill命令,但它不起作用。事情是这样的:

read -p "Process to kill: " proceso
proid= pidof $proceso
echo "$proid"
kill $proid
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么它没有杀死它吗?我知道还有其他一些方法可以做到这一点,即使使用 PID,但它们似乎都不适合我。我相信这是 Bash 语言(我刚刚开始学习)的某种问题。

Sto*_*ica 7

而不是这个:

proid= pidof $proceso
Run Code Online (Sandbox Code Playgroud)

你的意思可能是这样的:

proid=$(pidof $proceso)
Run Code Online (Sandbox Code Playgroud)

即便如此,该程序也可能不会被杀死。默认情况下,kill PIDTERM信号发送到指定的进程,使其有机会有序关闭,例如清理其正在使用的资源。在没有正常清理的情况下发送进程终止的最强信号是KILL使用kill -KILL PIDor kill -9 PID


我相信这是 bash 语言(我刚刚开始学习)的某种问题。

您发布的原始行proid= pidof $proceso应该会引发错误,并且 Bash 会打印有关它的错误消息。调试问题首先要阅读并理解软件试图告诉您的错误消息。


Tad*_*egn 7

使用以下命令显示进程的端口和PID:

sudo netstat -plten 
Run Code Online (Sandbox Code Playgroud)

进而

kill -9 PID
Run Code Online (Sandbox Code Playgroud)

以下是杀死在端口 8283 上运行且 PID=25334 的进程的示例

在此输入图像描述