আপনি যখনই লিনাক্স বা ওএসএক্সে একটি প্রোগ্রাম চালান, এটি একটি প্রক্রিয়ার ভিতরে চলে। এবং প্রতিটি প্রক্রিয়ার একটি নাম আছে। আপনি যখন ps বা টপ, বা htop-এর মতো কমান্ড চালান তখন আপনি যা দেখতে পান তা হল নাম
htop ডানদিকের কলামে প্রক্রিয়ার নাম দেখায়।
ডিফল্ট প্রক্রিয়ার নাম চুষতে পারে
ডিফল্টরূপে একটি প্রসেসের নামটি আপনি যে প্রোগ্রামটি চালাচ্ছেন তা সম্বলিত এক্সিকিউটেবল ফাইলের নাম থেকে নেওয়া হয়। এটি বেশিরভাগ এক্সিকিউটেবলের জন্য সুন্দরভাবে কাজ করে। সর্বোপরি, এটি বোঝায় যে আপনি যখন "কম" চালান, তখন এর প্রক্রিয়ার নাম হওয়া উচিত "কম।"
কিন্তু ডিফল্ট প্রক্রিয়ার নামগুলি কম সহায়ক হয় যখন আপনার কাছে একটি রুবি স্ক্রিপ্ট থাকে যা আপনি কমান্ড লাইন থেকে চালাচ্ছেন। নীচের উদাহরণে, আমি একটি রুবি স্ক্রিপ্ট চালাচ্ছি যা পাঁচ সেকেন্ডের জন্য ঘুমায়। যদি আমি একই সাথে অন্য টার্মিনাল উইন্ডোতে "ps" চালাই, আমি দেখতে পাচ্ছি যে আমার স্লিপারের প্রক্রিয়ার নাম হল "ruby sleep_5_seconds.rb"। যদি আমি কমান্ড লাইন আর্গুমেন্ট যোগ করি, সেগুলি প্রক্রিয়ার নামেও দেখাবে। এটি নাম দ্বারা প্রক্রিয়া উল্লেখ করা কঠিন করে তুলবে৷
৷সম্পূর্ণ রুবি কমান্ডটি প্রক্রিয়ার নাম হিসাবে তালিকাভুক্ত করা হয়েছে
কীভাবে প্রক্রিয়ার নাম পরিবর্তন করবেন
সৌভাগ্যবশত আপনি রুবি দিয়ে সহজেই বর্তমান প্রক্রিয়ার নাম পরিবর্তন করতে পারেন। এখানে আমাদের আপডেট স্ক্রিপ্ট. এটি এখন তার প্রক্রিয়ার নাম সেট করে "স্লিপার।"
# `Process.setproctitle()` is in Ruby >= 2.1
# For earlier versions of Ruby, you can use
# $PROGRAM_NAME = "sleeper"
# or
# $0 = "sleeper"
Process.setproctitle("sleeper")
sleep 5
এখন, যখন আমরা প্রোগ্রামটি চালাই এবং এর শিরোনাম প্রদর্শন করতে ps ব্যবহার করি, তখন আমরা "sleeper"
পাই
রুবিতে প্রক্রিয়া শিরোনাম পরিবর্তন করা ps
এর আউটপুট পরিবর্তন করে এবং top
তবে আরও ভাল, আমরা এখন নাম দ্বারা প্রক্রিয়াটিকে সহজেই উল্লেখ করতে পারি। ধরুন আমি আমার স্লিপার ঘুমানোর জন্য অপেক্ষা করতে করতে ক্লান্ত হয়ে পড়ি। আমি killall sleeper
কমান্ড ব্যবহার করে এটিকে মেরে ফেলতে পারি .
আপনি killall
ব্যবহার করতে পারেন নাম দ্বারা প্রসেস বন্ধ করার আদেশ
প্রক্রিয়ার নামের মাধ্যমে সার্ভারের স্থিতি প্রদর্শন করা হচ্ছে
প্রক্রিয়া শিরোনাম পরিবর্তন করার জন্য আমাদের নতুন ক্ষমতার একটি আকর্ষণীয় ব্যবহার হল দীর্ঘ চলমান প্রক্রিয়াগুলির জন্য স্থিতি তথ্য প্রদর্শন করা। আপনি যদি কখনও ইউনিকর্ন চালান তবে এটি পরিচিত দেখা উচিত:
\-+= 27185 deply unicorn master -c simple_unicorn_config.rb -l0.0.0.0:8080
|--- 27210 deply unicorn worker[0] -c simple_unicorn_config.rb -l0.0.0.0:8080
|--- 27211 deply unicorn worker[1] -c simple_unicorn_config.rb -l0.0.0.0:8080
|--- 27212 deply unicorn worker[2] -c simple_unicorn_config.rb -l0.0.0.0:8080
|--- 27213 deply unicorn worker[3] -c simple_unicorn_config.rb -l0.0.0.0:8080
এটি চারটি শিশু প্রক্রিয়া সহ ইউনিকর্নের একটি উদাহরণ। ঠিক যেমন আমাদের sleep_5_seconds.rb উদাহরণের সাথে, প্রক্রিয়ার নামগুলি কেবল প্রসেসগুলি চালু করতে ব্যবহৃত কমান্ডগুলি দেখায়৷
কর্মী ব্যস্ত বা নিষ্ক্রিয় থাকলে স্ট্যাটাস লাইন প্রদর্শনের জন্য এটি উপযোগী হতে পারে। এরকম কিছু:
\-+= 27185 deply unicorn master -c simple_unicorn_config.rb -l0.0.0.0:8080
|--- 27210 deply unicorn worker[0] -c simple_unicorn_config.rb -l0.0.0.0:8080 BUSY
|--- 27211 deply unicorn worker[1] -c simple_unicorn_config.rb -l0.0.0.0:8080
|--- 27212 deply unicorn worker[2] -c simple_unicorn_config.rb -l0.0.0.0:8080
|--- 27213 deply unicorn worker[3] -c simple_unicorn_config.rb -l0.0.0.0:8080 BUSY
আপনি আসলে একটি র্যাক মিডলওয়্যার দিয়ে এটি খুব সহজেই করতে পারেন। এটি দেখতে কেমন হতে পারে তার একটি উদাহরণ এখানে:
class UpdateProcessTitle
def initialize(app)
@app = app
end
def call(env)
title = $0
$0 = $0 + " BUSY"
status, headers, body = @app.call(env)
$0 = title
[status, headers, body]
end
end
প্রতিটি ওয়েব পৃষ্ঠার অনুরোধে প্রক্রিয়া শিরোনাম সেট করার পারফরম্যান্সের প্রভাব সম্পর্কে আমার কোন ধারণা নেই। তাই এক দানা লবণ দিয়ে নিন। কিন্তু তবুও, এটি একটি সুন্দর ধারণা।
আপনি যদি এই ধারণাটির আরও উন্নত বাস্তবায়ন দেখতে চান - যেটি আসলে উৎপাদনে ব্যবহৃত হয়েছে - ইউনিকর্ন ওয়ার্কার প্রসেস নেম ওভাররাইডিং-এ টমাস ভারানেকাসের দুর্দান্ত ব্লগ পোস্টটি দেখুন৷