Problema
Me gustaría matar un proceso llamado raspivid (programa que graba videos usando una cámara Raspberry Pi) pero no puedo ...
Así es como lo llamo:
#!/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 busco este proceso, todavía está allí:
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 trato de matarlo, no muere. En cambio, cambia el PID principal a 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
Observaciones:
- La llamada funciona bien por un tiempo (2 horas o algo así) luego comienza a colgar.
- Solo un apagado físico resuelve el problema. No puedo reiniciar a través de la terminal (también se cuelga)
Mis preguntas:
- ¿Por qué Linux asigna el PID primario a 1?
- ¿Por qué el proceso no puede ser asesinado? (También lo intenté
sudo kill -9 7238
)
killall
Aparentemente, el suyo está matando al padre, no el proceso que él quería.