আপনি সম্ভবত বলতে পারেন এটি করার জন্য প্রচুর উপায় রয়েছে।
আপনার "আপডেট # 2" সম্পর্কিত - সাধারণভাবে বলতে গেলে, পিতামাতা-শিশুক্রমক্রমের যে কোনও প্রক্রিয়া বন্ধ করা সাধারণত সম্পর্কিতভাবে সমস্ত সম্পর্কিত প্রক্রিয়া বন্ধ করে দেবে। তবে এর ব্যতিক্রম অনেক আছে। আদর্শভাবে, আপনি একটি প্রক্রিয়া ট্রিতে চূড়ান্ত 'শিশু' অবসান করতে চান, তারপরে এই সন্তানের পিতামাতারা তাদের চালানোর মতো অন্য কোনও কাজ না করে যদি প্রস্থান করা উচিত। তবে আপনি যদি কোনও পিতামাতাকে হত্যা করেন তবে পিতা-মাতার মৃত্যুর পরে বাচ্চাদের কাছে সিগন্যালটি রিলে করা উচিত এবং বাচ্চারা পাশাপাশি প্রস্থান করতে হবে - তবে এমন কিছু ঘটনাও রয়েছে যেখানে বাচ্চাদের প্রক্রিয়াগুলি সিগন্যালটিকে উপেক্ষা করতে পারে (ফাঁদ বা অনুরূপ প্রক্রিয়াগুলির মাধ্যমে) এবং চালিয়ে যেতে পারে একটি চালনার জন্য 'init' প্রক্রিয়া উত্তরাধিকার সূত্রে প্রাপ্ত হবে (বা অনুরূপ will) তবে প্রক্রিয়া আচরণের এই বিষয়টি জটিল হয়ে উঠতে পারে এবং আমি কেবল এটি সেখানে রেখে যাব ...
আমি একটি পদ্ধতি পছন্দ করি যদি আমি একটি নিয়ন্ত্রণ স্ক্রিপ্ট ব্যবহার করতে না চাই (পরবর্তী বর্ণিত) হ'ল প্রক্রিয়াটি শুরু করতে এবং পরিচালনা করতে 'স্ক্রিন' ইউটিলিটিটি ব্যবহার করা। 'স্ক্রিন' কমান্ডটি বৈশিষ্ট্যগুলিতে পূর্ণ এবং মাস্টার পেতে কিছুটা সময় নিতে পারে। আমি আপনাকে পুরো ব্যাখ্যার জন্য 'স্ক্রিন' ম্যান পৃষ্ঠা পড়তে উত্সাহিত করব। পটভূমিতে একটি প্রক্রিয়া শুরু করার জন্য একটি দ্রুত উদাহরণ হ'ল আদেশটি:
স্ক্রিন-ডি-এম / পাথ / টু / প্রোগ্রাম
এটি একটি 'স্ক্রিন' সেশনের অভ্যন্তরে "/ পাথ / টু / প্রোগ্রাম" শুরু করবে।
আপনি কমান্ডটি দিয়ে আপনার চলমান সেশনটি দেখতে পাবেন:
পর্দা-এলএস
এবং যে কোনও সময় আপনি কমান্ডটি দিয়ে আপনার চলমান প্রোগ্রামের সাথে পুনরায় সংযোগ করতে পারেন:
পর্দা -r
এবং তারপরে এটিকে কেবল একটি ডিগ্রি সেন্টিগ্রেড বা যা কিছু দিয়ে শেষ করুন।
ইচ্ছামত আপনার প্রক্রিয়াটি পুনরায় সংযোগ স্থাপন এবং সংযোগ বিচ্ছিন্ন করতে সক্ষম হওয়ার পাশাপাশি 'স্ক্রিন' আপনার প্রোগ্রামটি যে কোনও স্টাডাউট () ক্যাপচার করবে।
তবে এই বিষয়গুলিতে আমার ব্যক্তিগত পছন্দটি হ'ল একটি নিয়ন্ত্রণ প্রোগ্রাম থাকা যা কোনও প্রক্রিয়া শুরু এবং থামানো পরিচালনা করে। এটি কিছুটা জটিল হয়ে উঠতে পারে এবং কিছু যুক্তিযুক্ত জটিল স্ক্রিপ্টিংয়ের প্রয়োজন। এবং যে কোনও স্ক্রিপ্টের মতো এটি করার জন্য কয়েক ডজন ভাল উপায় রয়েছে। আমি নিয়মিতভাবে অ্যাপ্লিকেশনগুলি শুরু করতে এবং থামাতে যে পদ্ধতিটি ব্যবহার করি তার একটি বাশ উদাহরণ আমি অন্তর্ভুক্ত করেছি। যদি আপনার কাজটি সহজ হয় তবে আপনি এটিকে সরাসরি কন্ট্রোল স্ক্রিপ্টে canোকাতে পারেন - বা আপনি এই নিয়ন্ত্রণ স্ক্রিপ্টটিকে অন্য কোনও বাহ্যিক প্রোগ্রামে কল করতে পারেন। নোট করুন যে প্রক্রিয়াটি পরিচালনা করার ক্ষেত্রে এই উদাহরণটি কোনওভাবেই ব্যাপক নয়। আমি পরিস্থিতিগুলির সম্ভাবনাগুলি এড়িয়ে গেছি যেমন: আপনি "স্টার্ট" বিকল্পটি ব্যবহার করার সময় স্ক্রিপ্টটি ইতিমধ্যে চলছে না তা নিশ্চিত করে, চলমান পিআইডি আসলেই আপনি যে প্রক্রিয়াটি শুরু করেছিলেন তা বৈধতা প্রমাণ করে (যেমন আপনার স্ক্রিপ্টের অভ্যাস ' টি মারা গিয়েছিল এবং একই পিআইডি ব্যবহার করে অন্য প্রক্রিয়া শুরু করা হয়েছিল) এবং প্রথম 'কিল' অনুরোধে স্ক্রিপ্টটি আসলে (প্রস্থান করা) প্রতিক্রিয়া জানিয়েছিল। এই সমস্ত চেক করা জটিল হয়ে উঠতে পারে এবং আমি উদাহরণটি খুব দীর্ঘ এবং জটিল করতে চাইনি। আপনার শেল স্ক্রিপ্টিং অনুশীলনের জন্য আপনি উদাহরণটি পরিবর্তন করতে চাইতে পারেন।
নিম্নলিখিত প্রোগ্রামটি "প্রোগ্রামার্টেল" নামে একটি ফাইলে সংরক্ষণ করুন, কমান্ডটি দিয়ে এটি সম্পাদনযোগ্য করুন:
chmod 755 programctl
তারপরে ফাইলটি সম্পাদনা করুন এবং "কোডটি" দিয়ে শুরু হওয়া কেস-বিভাগে আপনার কোড / স্ক্রিপ্ট যুক্ত করুন।
"ডেস্কটপটি" বর্তমান ডিরেক্টরিতে থাকা অনুমান করে সবকিছু ঠিকঠাক হয়ে গেলে আপনি আপনার প্রোগ্রামটি দিয়ে শুরু করতে পারেন:
./pramramctl শুরু
এবং এটি দিয়ে বন্ধ করুন:
। / প্রোগ্রামাগুলি স্টপ
চিয়ার্স।
#!/bin/bash
# Description: A wrapper script used to stop/start another script.
#--------------------------------------
# Define Global Environment Settings:
#--------------------------------------
# Name and location of a persistent PID file
PIDFILE="/tmp/tmpfile-$LOGNAME.txt"
#--------------------------------------
# Check command line option and run...
# Note that "myscript" should not
# provided by the user.
#--------------------------------------
case $1
in
myscript)
# This is where your script would go.
# If this is a routine 'bash' shell script, you can enter
# the script below as illustrated in the example.
# Or you could simply provide the path and parameters
# to another script such as /dir/name/command -options
# Example of an embedded script:
while true
do
# do something over and over...
sleep 1
done
# Example of an external script:
/usr/local/bin/longrun -x
;;
start)
# Start your script in the background.
# (Note that this is a recursive call to the wrapper
# itself that effectively runs your script located above.)
$0 myscript &
# Save the backgound job process number into a file.
jobs -p > $PIDFILE
# Disconnect the job from this shell.
# (Note that 'disown' command is only in the 'bash' shell.)
disown %1
# Print a message indicating the script has been started
echo "Script has been started..."
;;
stop)
# Read the process number into the variable called PID
read PID < $PIDFILE
# Remove the PIDFILE
rm -f $PIDFILE
# Send a 'terminate' signal to process
kill $PID
# Print a message indicating the script has been stopped
echo "Script has been stopped..."
;;
*)
# Print a "usage" message in case no arguments are supplied
echo "Usage: $0 start | stop"
;;
esac