在 Raspbian 中终止进程

在 Raspbian 中终止进程

我正在尝试终止以下进程:

pi@raspberrypi ~ $ ps aux | grep raspi
pi        4647  0.0  0.5   3520  1392 pts/2    S+   12:05   0:00 grep --color=auto raspi
root      8148  0.0  0.5  10744  1372 ?        Sl   06:25   0:00 raspivid -w 800 -h 600 -t 15000 -o /home/pi/media/2015-02-01-06-25-03.177474.h264 -n -rot 270
pi       30099  0.0  0.6  11400  1748 pts/1    Sl+  11:57   0:00 raspistill -o test.jpg

我尝试了如下所示的一些命令,但没有成功:

pi@raspberrypi ~ $ sudo pkill -f raspivid
pi@raspberrypi ~ $ sudo pkill -f raspistill
pi@raspberrypi ~ $ sudo kill 8148
pi@raspberrypi ~ $ sudo kill 30099

我以“pi”用户身份通过​​ SSH 登录,这是问题的根源吗?如果是,那么为什么我无法终止自己的进程(30099)?

我这里遗漏了什么吗?

答案1

命令系列的名称kill具有误导性 - 它们实际上不会终止任何东西,只是向进程发送信号。默认情况下SIGTERM会发送信号,只会温和地要求进程退出,但进程可以选择忽略它或以不同的方式处理它。(请参阅手册页kill)。

要强制退出一个进程,您必须向它发送一个SIGKILL信号。SIGKILL该进程无法忽略该信号,并且在大多数情况下会导致其立即终止,而不会完成正在进行的任务等。

发送的可能语法很少SIGKILL,所有这些都是完全等效的:

kill -9 <pid>
kill -kill <pid>
kill -s SIGKILL <pid>

SIGKILL即使有并且,该进程也有可能无法被杀死需要重新启动

答案2

我使用以下命令终止了通过 rc.local 启动的 python3 脚本:

sudo killall python3

我首先使用以下命令列出所有正在运行的进程:

ps -ef

相关内容