কিছুক্ষণ আগে আমি অন্য প্রক্রিয়া শেষ হওয়ার অপেক্ষার জন্য একটি স্ক্রিপ্ট লিখেছি। প্রদত্ত যে সঠিকভাবে সেট করা আছে NOISE_CMD
মত কিছু হতে পারে ।notify-send ...
DISPLAY
#!/bin/bash
NOISE_CMD="/usr/bin/mplayer -really-quiet $HOME/sfx/alarm-clock.mp3"
function usage() {
echo "Usage: $(basename "$0") [ PROCESS_NAME [ PGREP_ARGS... ] ]"
echo "Helpful arguments to pgrep are: -f -n -o -x"
}
if [ "$#" -gt 0 ] ; then
PATTERN="$1"
shift
PIDS="$(pgrep "$PATTERN" "$@")"
if [ -z "$PIDS" ] ; then
echo "No process matching pattern \"$PATTERN\" found."
exit
fi
echo "Waiting for:"
pgrep -l "$PATTERN" "$@"
for PID in $PIDS ; do
while [ -d "/proc/$PID" ] ; do
sleep 1
done
done
fi
exec $NOISE_CMD
কোনও বিতর্ক ছাড়াই, অবিলম্বে কিছুটা শব্দ করুন। এই আচরণটি সুবিধার জন্য এই জাতীয় কিছুটিকে মঞ্জুরি দেয় (বলুন যে আপনি নীচে স্ক্রিপ্ট কল করেন alarm.sh
):
apt-get upgrade ; ~/bin/alarm.sh
অবশ্যই আপনি এই জাতীয় স্ক্রিপ্ট সহ অনেক মজার কাজ করতে পারেন, যেমন কোনও উদাহরণের জন্য alarm.sh
অপেক্ষা করার উদাহরণ দেওয়া alarm.sh
, এটি অন্য কোনও কমান্ডের অপেক্ষায়। অথবা অন্য কোনও লগ ইন করা ব্যবহারকারীর কিছু কাজ সমাপ্ত করার ঠিক পরে একটি কমান্ড কার্যকর করা ...>: ডি
উপরের স্ক্রিপ্টটির একটি পূর্ববর্তী সংস্করণ আকর্ষণীয় হতে পারে, যদি আপনি pgrep
নিজের উপর নির্ভরতা এড়াতে চান এবং নিজেকে নিজেই প্রসেস আইডি অনুসন্ধান করতে চান :
#!/bin/bash
if [ "$#" -lt 2 -o ! -d "/proc/$1" ] ; then
echo "Usage: $(basename "$0") PID COMMAND [ ARGUMENTS... ]"
exit
fi
while [ -d "/proc/$1" ] ; do
sleep 1
done
shift
exec "$@"
সামান্য সামান্য অফ-টপিক, তবে অনুরূপ পরিস্থিতিতে কার্যকর: কারও মধ্যে আগ্রহী হতে পারে reptyr
, এমন একটি সরঞ্জাম যা কিছু (পিতামাতার) শেল থেকে একটি প্রক্রিয়া "চুরি" করে এবং এটি বর্তমান শেল থেকে চালায়। আমি অনুরূপ বাস্তবায়ন চেষ্টা করেছি এবং reptyr
আমার উদ্দেশ্যগুলির জন্য সবচেয়ে সুন্দর এবং সবচেয়ে নির্ভরযোগ্য।