কাম করার সময় কখনো কখনো আপনার প্রোগ্রামগুলো হঠাৎ আটকে যেতে পারে। আবার প্রোগ্রামগুলো চলছে হলেও প্রসেসর বা মেমরি ব্যবহার খুব বেশি হতে পারে। লিনাক্সে ps (Process Status) কমান্ড ব্যবহার করে এই সমস্যাগুলো সমাধান করা যায়। এখানে আমরা দেখাব কিভাবে ps কমান্ড ব্যবহার করে বর্তমানে চলমান প্রসেসগুলো এবং তাদের PID লিস্ট করতে হয়। তারপর আপনি আপনার রিসোর্স খেয়ে যাওয়া প্রসেসগুলো খুঁজে বের করে কিল করতে পারবেন।
ps কমান্ড ব্যবহার
ps কমান্ডকে একা ব্যবহার করা যায়। এটি চারটি কলামের তথ্য আউটপুট দেয়:
- PID: সিস্টেম দ্বারা নির্ধারিত প্রসেসের অনন্য আইডেন্টিফায়ার। প্রসেস বন্ধ করার জন্য এই মানটি ব্যবহার করা হয়।
- TTY: যে টার্মিনাল থেকে প্রসেস শুরু করা হয়েছে।
- TIME: প্রসেস দ্বারা ব্যবহৃত মোট সিপিইউ সময়।
- CMD: প্রসেস তৈরিকারী কমান্ড
দ্রষ্টব্য: কোনো অপশন ছাড়া কমান্ড ব্যবহার করলে এটি বেশি তথ্য দেখায় না। নিচে কিছু উপায় দেওয়া হলো যাতে এটি আরও উপযোগী হয়।
১. সব ইউজারের প্রসেস লিস্ট করুন
কিছু প্রোগ্রাম ইনস্টল করার সময় তারা প্রসেস চালানোর জন্য অতিরিক্ত ইউজার তৈরি করে। ইউজারদের প্রসেস লিস্ট করতে -e অপশন ব্যবহার করুন:
ps -e
এবং এর আউটপুট:
PID TTY TIME CMD 1 ? 00:00:02 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:00 kworker/0:0 4 ? 00:00:00 kworker/0:0H 5 ? 00:00:00 kworker/u256:0 6 ? 00:00:00 mm_percpu_wq
২. আরও তথ্য সহ প্রসেস লিস্ট করুন
চলমান প্রসেস লিস্ট করার সময় আরও তথ্য পাওয়ার জন্য ef অপশন ব্যবহার করুন।
ps -ef
এবং এর আউটপুট:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 21:34 ? 00:00:03 /sbin/init maybe-ubiquity root 2 0 0 21:34 ? 00:00:00 [kthreadd] root 3 2 0 21:34 ? 00:00:00 [kworker/0:0] root 4 2 0 21:34 ? 00:00:00 [kworker/0:0H] root 6 2 0 21:34 ? 00:00:00 [mm_percpu_wq] root 7 2 0 21:34 ? 00:00:00 [ksoftirqd/0]
৩. প্রসেস আইডি দিয়ে প্রসেস ফিল্টার করুন
যদি আপনি জানেন যে কোনো চলমান প্রসেসের প্রসেস আইডি কত, তবে -p ফ্ল্যাগ ব্যবহার করে সেটি নির্দিষ্টভাবে ফিল্টার করতে পারেন। এটি একাধিক PID আর্গুমেন্ট হিসেবে নিতে পারে, যেগুলো কমা দিয়ে আলাদা করা থাকে (স্পেস নেই)।
ps -ef -p 1234,5678,9012
৪. একজন ইউজারের মালিকানাধীন প্রসেস লিস্ট করুন
আপনি u অপশন এবং ইউজারের নাম ব্যবহার করে একজন নির্দিষ্ট ইউজারের মালিকানাধীন প্রসেস লিস্ট করতে পারেন:
ps -u userName
এবং এর আউটপুট:
PID TTY TIME CMD 2832 ? 00:00:00 systemd 2842 ? 00:00:00 (sd-pam) 3043 ? 00:00:00 sshd 3044 pts/1 00:00:00 bash 18396 pts/1 00:00:00 ps
৫. সক্রিয় প্রসেসগুলো লিস্ট করুন
ax অপশন ব্যবহার করে সমস্ত সক্রিয় প্রসেস লিস্ট করা সম্ভব:
ps -ax
এবং এর আউটপুট:
PID TTY STAT TIME COMMAND 1 ? Ss 0:02 /sbin/init maybe-ubiquity 2 ? S 0:00 [kthreadd] 3 ? I 0:00 [kworker/0:0] 4 ? I< 0:00 [kworker/0:0H] 6 ? I< 0:00 [mm_percpu_wq] 7 ? S 0:00 [ksoftirqd/0]
৬. ইউজারসহ সক্রিয় প্রসেস লিস্ট করুন
-aux ফ্ল্যাগ যোগ করে ইউজারসহ সমস্ত সক্রিয় প্রসেস লিস্ট করা যায়:
ps -aux
এবং এর আউটপুট:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 78132 9188 ? Ss 21:34 0:02 /sbin/init maybe-ubiquity root 2 0.0 0.0 0 0 ? S 21:34 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I 21:34 0:00 [kworker/0:0] root 4 0.0 0.0 0 0 ? I< 21:34 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? I< 21:34 0:00 [mm_percpu_wq] root 7 0.0 0.0 0 0 ? S 21:34 0:00 [ksoftirqd/0] root 8 0.0 0.0 0 0 ? I 21:34 0:00 [rcu_sched] root 9 0.0 0.0 0 0 ? I 21:34 0:00 [rcu_bh] root 10 0.0 0.0 0 0 ? S 21:34 0:00 [migration/0]
৭. প্রোগ্রামের নাম দিয়ে প্রসেস ফিল্টার করুন
ps রেজাল্টে ফিল্টার लगाয়ে কোনো নির্দিষ্ট চলমান প্রোগ্রামের তথ্য পাওয়া যায়:
ps -aux | grep docker
এবং এর আউটপুট:
root 1508 0.0 2.2 1518156 90868 ? Ssl 21:34 0:03 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock userkub+ 18429 0.0 0.0 13144 1108 pts/1 S+ 23:57 0:00 grep --color=auto docker
বিকল্পভাবে, প্রসেসের নাম দিয়ে ফিল্টার করতে C অপশনও ব্যবহার করা যায়:
ps -C name
৮. নির্দিষ্ট কলাম প্রদর্শন করুন
চারটি ডিফল্ট কলাম ছাড়াও ps কমান্ডে অতিরিক্ত কলাম দেখানো যায়। উদাহরণস্বরূপ:
ps -e -o pid,uname,pcpu,pmem,comm
-o ফ্ল্যাগ ps কমান্ডের আউটপুটের জন্য নির্দিষ্ট ডিসপ্লে অপশন সেট করে। ps-এর পূর্ণ স্ট্যান্ডার্ড ডিসপ্লে অপশন লিস্ট দেখুন।
৯. হায়ারার্কিক্যাল ট্রি স্টাইলে রেজাল্ট দেখান
ps -e --forest
এটি ASCII আর্ট ব্যবহার করে ট্রি-স্টাইল কাঠামো তৈরি করে প্রসেস প্রদর্শন করে। ফর্ক করা এবং চাইল্ড প্রসেসগুলো প্যারেন্ট প্রসেসের ডিসেন্ডেন্ট হিসেবে দেখায়, সর্ট করে মিলিয়ে। ট্রির "ব্রাঞ্চ" গুলো লুকাতে --forest এর বদলে -H ব্যবহার করুন।
১০. প্রসেস থ্রেড প্রদর্শন করুন
ps -p 4041 -L
-L ফ্ল্যাগ ps-এর যেকোনো ফাংশনালিটির জন্য থ্রেডেড ডিসপ্লে অন করে। কোনো নির্দিষ্ট প্রসেসের থ্রেড ট্র্যাক করার সময় এটি সবচেয়ে উপযোগী।
১১. সমস্ত রুট প্রসেস দেখান
ps -f -U root -u root
রিয়েল এবং ইফেক্টিভ রুট আইডেন্টিফিকেশন নিয়ে চলমান সমস্ত প্রসেস সার্চ করুন। -f ফ্ল্যাগের কারণে এটি ফুল-লেঞ্জ ফরম্যাটে দেখায়। আউটপুট কাস্টমাইজ করতে -o ফ্ল্যাগের সাথে কাম্বাইন করা যায়।
প্রসেস বন্ধ করতে kill কমান্ড ব্যবহার করুন
সমস্যা সৃষ্টি করছা প্রসেস খুঁজে পেলে, চলমান প্রসেস কিল করতে kill কমান্ড ব্যবহার করুন। কমান্ডটি প্রসেসে একটি সিগন্যাল পাঠায় যা সেটি টার্মিনেট করে। প্রোগ্রামগুলো ফ্রিজ থাকলে অধিকাংশ সময় -9 অপশন ব্যবহার করে জোরে কিল করতে হয়।
ps-এর আউটপুট একটি তাৎক্ষণিক ভিউ। htop-এর মতো এটি ডাইনামিক্যালি আপডেট হয় না। এর মানে আপনাকে একাধিক বার চালাতে হতে পারে কোন প্রসেস মিসবিহেভ করছে সেটি বোঝার জন্য। প্রসেসের আপ-টু-ডেট ভিউ পেতে লিনাক্স সিস্টেমের অন্যান্য কমান্ডগুলো ট্রাই করতে পারেন।