Problème
Je voudrais tuer un processus appelé raspivid (programme qui enregistre des vidéos à l'aide d'un appareil photo Raspberry Pi) mais je ne peux pas ...
Voici comment je l'appelle:
#!/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 $$
Si je recherche ce processus, il est toujours là:
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
Si j'essaye de le tuer, il ne meurt pas. Au lieu de cela, il change le PID parent en 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
Observations:
- L'appel fonctionne bien pendant un certain temps (2 heures ou quelque chose), puis il commence à se bloquer.
- Seule une mise hors tension physique résout le problème. Je ne peux pas redémarrer via le terminal (il se bloque aussi)
Mes questions:
- Pourquoi Linux attribue-t-il le PID parent à 1?
- Pourquoi le processus ne peut-il pas être tué? (J'ai aussi essayé
sudo kill -9 7238
)
killall
tue apparemment le parent, pas le processus qu'il voulait.