pgrep
आप एक माता पिता की प्रक्रिया के बच्चे PIDs के सभी प्राप्त कर सकते हैं:
#!/bin/bash
#
# So something to show.
echo "UNO" > UNO.txt
echo "DOS" > DOS.txt
#
# Initialize Pid List
dPidLst=""
#
# Generate background processes
tail -f UNO.txt&
dPidLst="$dPidLst $!"
tail -f DOS.txt&
dPidLst="$dPidLst $!"
#
# Report process IDs
echo PID=$$
echo dPidLst=$dPidLst
#
# Show process on current shell
ps -f
#
# Start killing background processes from list
for dPid in $dPidLst
do
echo killing $dPid. Process is still there.
ps | grep $dPid
kill $dPid
ps | grep $dPid
echo Just ran "'"ps"'" command, $dPid must not show again.
done
तो बस के रूप में यह चलाते हैं। जैसा कि पहले उल्लेख किया गया है $$
वर्तमान स्क्रिप्ट पीआईडी है।
trap 'kill $(pgrep -P $$ | tr "\n" " ")' SIGINT SIGTERM EXIT
स्रोत
2013-05-02 05:49:12
$! सही है। क्या आप वाकई बीजी में स्क्रिप्ट शुरू कर रहे हैं? नमूना कृपया – pixelbeat
हाँ $! सही है। मैं गलत था। –
$$ में वर्तमान स्क्रिप्ट पीआईडी है। – HUB