我正在尝试终止以下进程:
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