问题
我想终止一个名为raspivid(使用Raspberry Pi摄像机录制视频的程序)的进程,但是我无法...
这就是我所说的:
#!/bin/bash
#Start recording...
raspivid -w 800 -h 600 -t 15000 -o $1 -v -n -rot 270 >> /home/pi/log/camera_output.txt 2>&1 &
#Waiting the video to be complete
sleep 16
#Killing child process
sudo kill -9 $!
#Killing parent process
sudo kill -9 $$
如果我搜索此过程,它仍然存在:
pi@raspberrypi ~ $ ps -ef | grep raspivid
root 7238 7234 0 21:53 ? 00:00:00 [raspivid]
pi 17096 14925 0 22:05 pts/0 00:00:00 grep --color=auto raspivid
如果我尝试杀死它,它不会死。而是将父PID更改为1:
pi@raspberrypi ~ $ sudo killall raspivid
pi@raspberrypi ~ $ ps -ef | grep raspivid
root 7238 1 0 21:53 ? 00:00:00 [raspivid]
pi 17196 14925 0 22:05 pts/0 00:00:00 grep --color=auto raspivid
pi@raspberrypi ~ $ sudo killall raspivid
观察结果:
- 通话正常工作了一段时间(2个小时左右),然后开始挂起。
- 只有关闭电源才能解决此问题。我无法通过终端重新启动(它也挂起)
我的问题:
- 为什么Linux将父PID分配为1?
- 为什么进程无法终止?(我也尝试过
sudo kill -9 7238
)
killall
显然是在杀死父母,而不是他想要的过程。