문제
raspivid (Raspberry Pi Camera를 사용하여 비디오를 녹화하는 프로그램)라는 프로세스를 종료하고 싶지만 ...
이것이 내가 부르는 방법입니다.
#!/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
부모가 원하는 과정이 아니라 부모를 죽이고있는 것 같습니다.