Linux-র ভালো দিক হলো আপনি সহজে সব কিছু ভিউ এবং ম্যানেজ করতে পারেন, বুট প্রসেস থেকে সফটওয়্যার প্যাকেজ ইনস্টলেশন পর্যন্ত। এখানে আমরা আলোচনা করব কীভাবে আপনি Linux-এ lsof কমান্ড ব্যবহার করে ওপেন ফাইল এবং সেগুলো ব্যবহার করা প্রসেস ভিউ করতে পারেন। এটি জানতে পারলে আপনি সিস্টেম কীভাবে কাজ করে সেটি বুঝতে পারবেন এবং স্পেসিফিক প্রসেসের জন্য প্রয়োজনীয় অ্যাকশন নিতে পারবেন।
Lsof কমান্ড
ওপেন ফাইল এবং সেগুলোর জন্য দায়বদ্ধ ইউজার বা প্রসেস ভিউ করতে আমরা lsof ইউটিলিটি ব্যবহার করি। ডিফল্টভাবে, lsof অধিকাংশ ডিস্ট্রিবিউশনে প্রি-ইনস্টলড থাকে।
যাইহোক, আপনার কাছে এটি ইনস্টলড না থাকলে, আপনি প্যাকেজ ম্যানেজার ব্যবহার করে আপনার সিস্টেমে ইনস্টল করতে পারেন।
Debian/Ubuntu
Debian-এ কমান্ড চালান:
sudo apt-get install lsof
Arch/Manjaro
Manjaro এবং অন্যান্য Arch-ভিত্তিক ডিস্ট্রিবিউশনে, pacman ব্যবহার করে কমান্ড চালান:
sudo pacman -S lsof
CentOS/REHL/Fedora
CentOS এবং REHL ফ্যামিলির জন্য, dnf ব্যবহার করুন:
sudo dnf install lsof
Linux প্রসেসের জন্য ওপেন ফাইল লিস্ট করতে lsof কমান্ড ব্যবহার
অন্যান্য Linux কমান্ডের মতো, lsof ইউটিলিটি খুব সহজে ব্যবহার করা যায়। কমান্ড lsof টাইপ করে শুরু করুন:
sudo lsof
উপরের কমান্ড রান করলে, lsof সিস্টেমের ওপেন ফাইল সম্পর্কে তথ্য রিটার্ন করবে।
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,48 4096 2 / init 1 root rtd DIR 8,48 4096 2 / init 1 root txt REG 0,19 632048 281474976743906 /init init 1 root 0u CHR 1,3 0t0 15362 /dev/null init 1 root 1u CHR 1,3 0t0 15362 /dev/null init 1 root 2u CHR 1,3 0t0 15362 /dev/null init 1 root 3w CHR 1,11 0t0 15367 /dev/kmsg init 1 root 4u sock 0,8 0t0 22689 protocol: AF_VSOCK init 1 root 5r REG 0,4 0 4026532185 mnt init 1 root 6r REG 0,4 0 4026532201 mnt init 1 root 7r DIR 8,48 4096 240 /home/cap init 1 root 8u DIR 8,48 4096 2 / init 1 root 9u sock 0,8 0t0 21853 protocol: AF_VSOCK
নোট: আপনার যদি sudo প্রিভিলেজ থাকে, তবে sudo দিয়ে কমান্ড চালান যাতে স্পেসিফিক ফাইলে "permission denied" এরর এড়ানো যায়।
উপরোক্ত আউটপুটে দেখা যাচ্ছে, lsof আউটপুটে নিচের কলামগুলো থাকে:
| Column | Representation |
|---|---|
| Command | টার্গেট ফাইল ব্যবহার করা প্রসেসের নাম দেখায়। |
| PID | ফাইল ব্যবহার করা প্রসেসের ইউনিক আইডেন্টিফায়ার। |
| TID | থ্রেড আইডেন্টিফায়ার দেখায়। |
| TASKCMD | টাস্ক কমান্ডের নাম। |
| USER | প্রসেস চালানো ইউজারের ইউজারনেম বা UID। |
| FD | ফাইল ডেসক্রিপ্টর এবং মোড। |
| TYPE | টার্গেট ফাইল সাথে asosciated নোড। |
| DEVICE | কমা দিয়ে আলাদা করা ডিভাইস নম্বর। |
| SIZE/OFF | বাইটে ফাইল সাইজ বা ফাইল অফসেট সাইজ। |
| NODE | লোকাল ফাইলের ইনোড ভ্যালু। ফাইলের inode ইনফরমেশন দেখতে stat কমান্ড ব্যবহার করতে পারেন। |
| NAME | ফাইলের মাউন্ট পয়েন্ট। |
এখন আপনি lsof কমান্ড প্রিন্টআউটের কন্টেন্ট কী রিপ্রেজেন্ট করে সেটি বুঝতে পেরেছেন, আসুন কমান্ডটি ব্যবহার করি স্পেসিফিক ইনফরমেশনের জন্য ফিল্টার করতে।
স্পেসিফিক প্রসেসের জন্য ফিল্টার করা
শুধু স্পেসিফিক প্রসেস দ্বারা ওপেন করা ফাইল ফিল্টার করতে, আমরা প্রসেসের নাম বা PID ভ্যালু ব্যবহার করতে পারি।
উদাহরণস্বরূপ, firefox প্রসেস দ্বারা ব্যবহৃত ফাইলগুলো দেখতে, কমান্ড ব্যবহার করুন:
sudo lsof -c firefox
এই কমান্ড firefox প্রসেস দ্বারা ওপেন করা সকল ফাইল দেখাবে।
প্রসেস আইডি দিয়ে ফিল্টার করতে, -p অপশন ব্যবহার করুন এবং প্রসেস আইডি পাস করুন। টার্গেট প্রসেসের প্রসেস আইডি পেতে top কমান্ড ব্যবহার করতে পারেন।
উদাহরণস্বরূপ, firefox প্রসেসের PID পেতে, কমান্ড ব্যবহার করুন:
sudo ps aux | grep firefox
একবার টার্গেট প্রসেসের PID পেলে, lsof ব্যবহার করে ওপেন ফাইল দেখান:
sudo lsof -p 2121
উপরোক্ত কমান্ড স্পেসিফাই করা PID 가진 প্রসেসের ওপেন ফাইল প্রিন্ট করবে।
স্পেসিফিক ইউজারের জন্য ফিল্টার করা
শুধু একটি নির্দিষ্ট ইউজারের 의해 ওপেন করা ফাইল ভিউ করতে, আমরা -u ফ্ল্যাগ ব্যবহার করতে পারি। উদাহরণস্বরূপ, debian ইউজারের জন্য ফিল্টার করতে, কমান্ড ব্যবহার করুন:
sudo lsof -u debian
স্পেসিফিক ফাইলের জন্য ফিল্টার করা
মান लीজিয়ে আপনি শুধু জানতে চান কোন প্রসেস এবং ইউজার একটি স্পেসিফিক ফাইল ওপেন করেছে। এটি করতে, ফাইলের নাম lsof-এ পাস করুন:
sudo lsof /bin/sleep
উপরোক্ত কমান্ড শুধু স্পেসিফিক ফাইলের জন্য ফিল্টার করবে এবং রিলেটেড ইনফরমেশন রিটার্ন করবে, যার মধ্যে ইউজার, প্রসেস আইডি, এবং আরও অনেক কিছু।
উপসংহার
এই সিম্পল টিউটোরিয়ালে, আমরা আলোচনা করেছি কীভাবে lsof কমান্ড ব্যবহার করে Linux-এ ওপেন ফাইল সম্পর্কে সিস্টেম কুয়েরি করতে হয়। আপনার জন্য টার্মিনালে ডিরেক্টরি কন্টেন্ট লিস্ট করার কিছু অতিরিক্ত কমান্ড এখানে।