Problema
Vorrei uccidere un processo chiamato raspivid (programma che registra video usando una fotocamera Raspberry Pi) ma non posso ...
Ecco come lo chiamo:
#!/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 $$
Se cerco questo processo, è ancora 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
Se provo ad ucciderlo, non muore. Invece cambia il PID padre in 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
osservazioni:
- La chiamata funziona bene per un po '(2 ore o qualcosa del genere) quindi inizia a bloccarsi.
- Solo uno spegnimento fisico risolve il problema. Non riesco a riavviare tramite terminale (si blocca anche)
Le mie domande:
- Perché Linux assegna il PID padre a 1?
- Perché il processo non può essere ucciso? (Ho anche provato
sudo kill -9 7238
)
killall
apparentemente sta uccidendo il genitore, non il processo che voleva.