問題
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
は明らかに彼を望んだプロセスではなく親を殺している。