সমস্যা
আমি রাস্পিভিড (একটি প্রোগ্রাম যা একটি রাস্পবেরি পাই ক্যামেরা ব্যবহার করে ভিডিও রেকর্ড করে) নামক একটি প্রক্রিয়াটিকে হত্যা করতে চাই তবে আমি তা করতে পারি না ...
এইভাবেই আমি এটি ডাকি:
#!/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
আমি যদি এটি হত্যা করার চেষ্টা করি তবে এটি মারা যায় না। পরিবর্তে এটি প্যারেন্ট পিআইডি 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 ঘন্টা বা কোনও কিছু) তারপরে এটি ঝুলতে শুরু করে।
- কেবল একটি শারীরিক শক্তি বন্ধই সমস্যাটি সমাধান করে। আমি টার্মিনাল দিয়ে রিবুট করতে পারি না (এটি খুব ঝুলিয়ে)
আমার প্রশ্নগুলো:
- কেন লিনাক্স প্যারেন্ট পিআইডি 1 এ নিয়োগ করে?
- প্রক্রিয়া কেন খুন হতে পারে না? (আমি চেষ্টাও করেছি
sudo kill -9 7238
)
killall
দৃশ্যত পিতামাতাকে হত্যা করছেন, তিনি যে প্রক্রিয়াটি চেয়েছিলেন তা নয়।