Masalah
Saya ingin membunuh proses yang disebut raspivid (program yang merekam video menggunakan Kamera Raspberry Pi) tapi saya tidak bisa ...
Beginilah saya menyebutnya:
#!/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 $$
Jika saya mencari proses ini, masih ada di sana:
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
Jika saya mencoba membunuhnya, itu tidak mati. Alih-alih itu mengubah PID induk menjadi 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
Pengamatan:
- Panggilan berfungsi dengan baik untuk sementara waktu (2 jam atau lebih) kemudian mulai menggantung.
- Hanya pematian daya fisik yang menyelesaikan masalah. Saya tidak bisa reboot melalui terminal (hang juga)
Pertanyaan saya:
- Mengapa Linux menetapkan PID induk ke 1?
- Mengapa prosesnya tidak bisa terbunuh? (Saya juga mencoba
sudo kill -9 7238
)
killall
itu rupanya membunuh orang tua, bukan proses yang dia inginkan.