লিনাক্সে একটি প্রক্রিয়ার জন্য খোলা ফাইলগুলি কীভাবে তালিকাভুক্ত করবেন

একটি প্রক্রিয়ার জন্য 'lsof' কমান্ড ব্যবহার করার নির্দেশিকা

আপনি যদি লিনাক্স বা ইউনিক্স সিস্টেমের ঘন ঘন ব্যবহারকারী হন তবে আপনি অবশ্যই এই বাক্যাংশটি শুনে থাকবেন, "লিনাক্সে, সবকিছুই একটি ফাইল"। এটিকে ধারণাটির অতি সরলীকরণ হিসাবে শ্রেণীবদ্ধ করা যেতে পারে তবে এটি লিনাক্স সিস্টেমে ফাইলগুলি কীভাবে কাজ করে তা বোঝার জন্য এটি খুব সহায়ক বলে প্রমাণিত হয়।

লিনাক্স এনভায়রনমেন্টে দেখা যায় এমন সবকিছুই ফাইল হতে হবে এমন নয়। কখনও কখনও এটি একটি প্রক্রিয়া হতে পারে, এটি একটি বিশেষ ফাইল হতে পারে যা হার্ডওয়্যার তথ্য, ডিরেক্টরি এবং অন্যান্য জিনিস উপস্থাপন করে।

এই টিউটোরিয়ালটি আপনাকে লিনাক্সে একটি নির্দিষ্ট প্রক্রিয়ার জন্য খোলা সমস্ত ফাইল খুঁজে বের করতে সাহায্য করবে।

ভূমিকা lsof আদেশ

লিনাক্স সিস্টেমের সৌন্দর্য হল আপনি টার্মিনালের মাধ্যমে আপনার সম্পূর্ণ সিস্টেম নিয়ন্ত্রণ এবং পরিচালনা করতে পারেন, যদি আপনি কমান্ডগুলি ভালভাবে জানেন। একবার কমান্ড জানা হয়ে গেলে টার্মিনালের সমস্ত কাজ একটি কেকওয়াক হয়ে যায়।

lsof মানে 'খোলা ফাইলের তালিকা' একবার আপনি কমান্ডের দীর্ঘ সংস্করণটি জেনে গেলে আপনার পক্ষে কমান্ডটি বুঝতে এবং একটি উত্পাদনশীল উপায়ে ব্যবহার করা খুব সহজ হয়ে যায়।

দ্য lsof কমান্ড খোলা ফাইল, সকেট এবং পাইপের তালিকা প্রদর্শন করে। আপনি এই কমান্ডটি ব্যবহার করে সহজেই খোলা ফাইলগুলি অনুসন্ধান করতে পারেন। যখন lsof কমান্ডটি কোন বিকল্প ছাড়াই ব্যবহৃত হয় এটি চলমান সক্রিয় প্রক্রিয়াগুলির সাথে সম্পর্কিত সমস্ত খোলা ফাইল প্রদর্শন করে।

বিঃদ্রঃ: আপনি ব্যবহার নিশ্চিত করুন sudo কমান্ড চালানোর সময়।

ব্যবহার করে lsof আদেশ

আমরা এর আউটপুট অধ্যয়ন করব lsof বিস্তারিত আদেশ. নিম্নলিখিত কমান্ড অধ্যয়ন.

sudo lsof | কম

বিঃদ্রঃ: যদি আমরা সরাসরি চালাই lsof কমান্ড, আউটপুট খুব বড় হতে চলেছে এবং আরও এগিয়ে যাওয়ার জন্য বিভ্রান্তি তৈরি করতে পারে। তাই, এখানে আমি ব্যবহার করেছি lsof | কম টিউটোরিয়ালের সুবিধার জন্য কমান্ড।

আউটপুট:

gaurav@ubuntu:~$ sudo lsof | কম কম্যান্ড পিআইডি টিআইডি ইউজার এফডি টাইপ ডিভাইস সাইজ/অফ নোড নাম kdevtmpfs 31 রুট cwd DIR 0,6 4400 2 / kdevtmpfs 31 রুট rtd DIR 0,6 4400 2 / kdevtmpfs 31 পরিচিত রুট / txt3w/অজ্ঞাত রুট DIR 8,8 4096 2 / netns 32 root rtd DIR 8,8 4096 2 / netns 32 রুট txt অজানা /proc/32/exe rcu_tasks 33 রুট cwd DIR 8,8 4096 2 / rcu_tasks ডিআইআর 24096 রুট / rcu_tasks 33 root txt অজানা /proc/33/exe kauditd 34 root cwd DIR 8,8 4096 2 / kauditd 34 root rtd DIR 8,8 4096 2 / kauditd 34 root txt অজানা /proc/34/ex 

নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে প্রদর্শিত হয় lsof আদেশ

প্যারামিটারবর্ণনা
আদেশকমান্ডের নাম দেখায় যা ফাইলটি খোলে।
পিআইডিপ্রসেস আইডেন্টিফায়ার নম্বর যে প্রক্রিয়াটি ফাইলটি খোলে।
টিআইডিথ্রেড শনাক্তকারী নম্বর। এটি একটি থ্রেড বা একটি টাস্ক নম্বর হতে পারে।
ব্যবহারকারীব্যবহারকারীর আইডি বা ব্যবহারকারীর নাম যিনি প্রক্রিয়াটির মালিক।
FDফাইলের ফাইল বর্ণনাকারী দেখায়।
টাইপফাইলের সাথে যুক্ত নোডের প্রকার।
যন্ত্রডিভাইস নম্বর দেখায়।
আকার/বন্ধবাইটে ফাইলের আকার দেখায়।
নোডইনোড নম্বরটি ডিরেক্টরি বা মূল ডিরেক্টরি দেখায়।
নামফাইল সিস্টেমের নাম দেখায় যেখানে প্রক্রিয়াটি অবস্থিত।

প্রক্রিয়া তালিকা

প্রথমত এবং সর্বাগ্রে চলমান প্রক্রিয়াগুলি এবং তাদের নিজ নিজ প্রসেস আইডিগুলি প্রাপ্ত করা আপনার জন্য গুরুত্বপূর্ণ৷ লিনাক্স পিআইডি, ব্যবহারকারী, ডিরেক্টরি ইত্যাদির মতো তাদের বৈশিষ্ট্য সহ প্রসেসগুলি তালিকাভুক্ত করার জন্য বিভিন্ন কমান্ড সরবরাহ করে।

আপনি যেমন কমান্ড ব্যবহার করতে পারেন শীর্ষ, পুনশ্চ, htop, pstree টার্মিনালে প্রসেস তালিকাভুক্ত করতে।

পুরো টিউটোরিয়াল জুড়ে, আমি ব্যবহার করব শীর্ষ তা করার আদেশ। দ্য শীর্ষ কমান্ড একটি চলমান সিস্টেমের একটি গতিশীল রিয়েল-টাইম ভিউ প্রদান করে। এটি বর্তমানে লিনাক্স কার্নেল দ্বারা পরিচালিত সমস্ত প্রক্রিয়া এবং থ্রেড প্রদর্শন করে। এর আউটপুট পরীক্ষা করতে নীচের প্রদত্ত ব্লকটি অধ্যয়ন করুন শীর্ষ আদেশ

বাক্য গঠন:

sudo শীর্ষ

আউটপুট:

gaurav@ubuntu:~$sudo শীর্ষ PID ব্যবহারকারী PR NI VIRT RES SHR S %CPU %মেম টাইম+ কম্যান্ড 2703 গৌরব 20 0 4286124 1.142g 103584 R 88.2 30.5 87:47828782838282830 ওয়েব 34,41 mongod 13765 গৌরভ 20 0 2931568 131408 47496 S 5.9 3.3 1: 42,34 ওয়েব সামগ্রী 1 রুট 20 0 225904 6824 4900 এস 0.0 0.2 0: 27,25 systemd 2 রুট 20 0 0 0 0 S 0.0 0.0 0: 00,05 kthreadd 4 রুট 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H 6 রুট 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 7 রুট 20 0 0 0 0 S 0.0 0.0 0.0 0.0 08/01 সফট রুট 0:08 0 0 I 0.0 0.0 0:22.32 rcu_sched 9 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_bh 10 রুট rt 0 0 0 0 S 0.0 0.0 0:03.13 মাইগ্রেশন 

উপরের ব্লকে, আমরা সমস্ত প্রক্রিয়া-সম্পর্কিত তথ্য এক জায়গায় দেখতে পারি। এখান থেকে আমরা খুঁজে পেতে পারি পিআইডি যে প্রক্রিয়ার মাধ্যমে আমাদের খোলা ফাইলগুলি প্রদর্শন করতে হবে lsof আদেশ

কিন্তু আপনি যদি শুধুমাত্র একটি নির্দিষ্ট প্রক্রিয়ার প্রক্রিয়া আইডি খুঁজে বের করতে চান এবং অন্যান্য অবাঞ্ছিত প্রক্রিয়াগুলি এড়াতে চান তাহলে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

বাক্য গঠন:

sudo শীর্ষ | grep [প্রক্রিয়া_নাম]

উদাহরণ:

gaurav@ubuntu:~$ শীর্ষ | grep টার্মিনাল 13819 গৌরভ 20 0 803336 19728 9160 S 0.3 0.5 0: 53,63 জিনোম-terminal- 13819 গৌরভ 20 0 803336 19728 9160 S 1.0 0.5 0: 53,66 জিনোম-terminal- 13819 গৌরভ 20 0 803336 19728 9160 S 0.3 0.5 0: 53,67 GNOME -টার্মিনাল- gaurav@ubuntu:~$

এখানে আমরা বিশেষভাবে প্রসেসের প্রসেস আইডি প্রদর্শন করেছি যার প্রসেসের নামে স্ট্রিং 'টার্মিনাল' আছে। এই পদ্ধতিটি কাজে আসে যখন আপনি সম্পূর্ণ প্রক্রিয়ার নাম বা PID সম্পর্কে জানেন না।

পিআইডি ব্যবহার করে একটি প্রক্রিয়া সম্পর্কিত খোলা ফাইলগুলি প্রদর্শন করা হচ্ছে

উপরের ব্লকে, আমরা শিখেছি কিভাবে উপরের কমান্ডের সাহায্যে প্রক্রিয়া সম্পর্কিত তথ্য পেতে হয়। এখন আমরা ব্যবহার করব পিআইডি সিস্টেমের যে কোনো প্রক্রিয়ার সাথে সংশ্লিষ্ট এবং সেই প্রক্রিয়ার সাথে সম্পর্কিত খোলা ফাইলগুলির তালিকা প্রদর্শন করার চেষ্টা করুন lsof আদেশ

উপরে প্রদত্ত আউটপুট থেকে, আসুন আমরা PID 1173 এর সাথে সম্পর্কিত প্রক্রিয়াটি গ্রহণ করি যা হাইলাইট করা হয়েছে। আমরা ব্যবহার করা হবে lsof -p [PID] তা করার আদেশ।

বাক্য গঠন:

sudo lsof -p [PID]

এই কমান্ডটি ইনপুট হিসাবে প্রক্রিয়াটির PID নেয় এবং এই PID এর সাথে সম্পর্কিত সমস্ত ফাইল তালিকাভুক্ত করে।

আউটপুট:

gaurav@ubuntu:~$ sudo lsof -p 1173 lsof: সতর্কতা: stat() fuse.gvfsd-fuse ফাইল সিস্টেম /run/user/1000/gvfs আউটপুট তথ্য অসম্পূর্ণ হতে পারে না। কম্যান্ড পিআইডি ব্যবহারকারী এফডি টাইপ ডিভাইস সাইজ/অফ নোডের নাম মঙ্গোড 1173 মঙ্গোডবি সিডব্লিউডি ডিআইআর 8,8 4096 2 / মঙ্গোড 1173 মঙ্গোডবি আরটিডি ডিআইআর 8,8 4096 2 / মঙ্গোড 1173 টি mongodb/8988996/1173 মঙ্গোডবিন 1173 মঙ্গোডবি মেম REG 8,8 71776 2624380 /lib/x86_64-linux-gnu/libnss_myhostname.so.2 মঙ্গোড 1173 মঙ্গোডবি মেম REG 8,8 101168 2624643/b24643 mongdb-10168 2624643/b26643/b16168 2624643 mongdb-1668-26168 মেম REG 8,8 26936 2624439 /lib/x86_64-linux-gnu/libnss_dns-2.27.so মঙ্গোড 1173 মঙ্গোডবি মেম REG 8,8 10160 2626002 /lib/x86_6439/lib/x86_64-linux-gnu/libnss_dns 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_files-2.27.so মঙ্গোড 1173 মঙ্গোডবি মেম REG 8,8 3004224 2909671 /usr/lib/locale/locale/localeb3ng-53g/localeb3ng/5203ng/locale/locale, mood5173 lib/x86_64-linux-gnu/libc-2.27.so mongod 1173 mongodb mem REG 8,8 144976 2624627 /lib/x86_64-linux-gnu/libpthread-2.27.so mongod REG 1173 মঙ্গোডবি 1173 মঙ্গোডবি 1173 মঙ্গোডবি 144976 x86_64-linux-gnu/libgcc_s.so.1 mongod 1173 mongodb me m REG 8,8 1700792 2622735 /lib/x86_64-linux-gnu/libm-2.27.so mongod 1173 mongodb mem REG 8,8 14560 2621535 /lib/x86_64-linux-gnu/libm-2735 8,8 31680 2624646 /lib/x86_64-linux-gnu/librt-2.27.so mongod 1173 mongodb mem REG 8,8 2357760 2890079 /usr/lib/x86_64/librt-2.27.so. :~$

প্রসেস আইডি 1713 সহ প্রক্রিয়ার জন্য খোলা ফাইলগুলি ব্যবহার করে প্রদর্শিত হয় lsof আদেশ

বিঃদ্রঃ: GNOME ব্যবহারকারীরা নিচের সতর্কতার সম্মুখীন হতে পারে। আপনি নিরাপদে এটি উপেক্ষা করতে পারেন.

lsof: সতর্কতা: can't stat() fuse.gvfsd-fuse ফাইল সিস্টেম /run/user/1000/gvfs আউটপুট তথ্য অসম্পূর্ণ হতে পারে।

প্রক্রিয়ার নাম ব্যবহার করে একটি প্রক্রিয়া সম্পর্কিত খোলা ফাইলের তালিকা করা

দ্য lsof কমান্ড আপনাকে প্রক্রিয়াগুলির নাম ব্যবহার করে খোলা ফাইলগুলি তালিকাভুক্ত করার একটি বিকল্প সরবরাহ করে। নামগুলি একটি ইনপুট স্ট্রিং হিসাবে কমান্ডে প্রদান করা উচিত। এই বিকল্পটি ব্যবহার করতে নীচের সিনট্যাক্স দেখুন।

বাক্য গঠন:

sudo lsof -c [প্রক্রিয়ার নাম]

উদাহরণ:

sudo lsof -c mysql

আউটপুট:

gaurav@ubuntu:~$ sudo lsof -c mysql lsof: সতর্কতা: stat() fuse.gvfsd-fuse ফাইল সিস্টেম /run/user/1000/gvfs আউটপুট তথ্য অসম্পূর্ণ হতে পারে। কম্যান্ড পিআইডি ইউজার এফডি টাইপ ডিভাইস সাইজ/অফ নোডের নাম mysqld 1266 mysql cwd DIR 8,8 4096 3154135 /var/lib/mysql mysqld 1266 mysql rtd DIR 8,8 Rqsl261826181981981888,896 মাইএসকিউএল /sbin/mysqld mysqld 1266 mysql mem REG 8,8 6288 5505444 /usr/lib/mysql/plugin/auth_socket.so mysqld 1266 mysql DEL REG 0,18 28127, REG18 mysql27 /[ELq8127 ​​[ELq81] mysql27/[q81] aio] mysqld 1266 mysql DEL REG 0,18 28125 /[aio] mysqld 1266 mysql mem REG 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_files /26m26m26m, REG26m267, REG26m267. lib/x86_64-linux-gnu/libnss_nis-2.27.so mysqld 1266 mysql mem REG 8,8 39744 2624438 /lib/x86_64-linux-gnu/libnss_compat-2.27.so 

আউটপুটটি সেই হিসাবে হবে যেখানে প্রসেস আইডিটি প্রসেস নামের পরিবর্তে ব্যবহার করা হয়েছে।

নেটওয়ার্ক সংযোগ দ্বারা খোলা ফাইল তালিকা

লিনাক্সে, ফাইলগুলি আপনার নেটওয়ার্ক সংযোগ, হার্ডওয়্যার সংযোগ ইত্যাদি সম্পর্কে তথ্যের আকারেও হতে পারে। আমরা ব্যবহার করতে পারি lsof নেটওয়ার্ক সংযোগ দ্বারা খোলা ফাইলগুলি তালিকাভুক্ত করার জন্য কমান্ড। নিম্নলিখিত পদ্ধতি ব্যবহার করুন.

sudo lsof -i

আউটপুট:

gaurav@ubuntu:~$ sudo lsof -i কম্যান্ড পিআইডি ব্যবহারকারী এফডি টাইপ ডিভাইস সাইজ/অফ নোড নাম systemd-r 969 systemd-resolve 12u IPv4 17357 0t0 UDP লোকালহোস্ট: ডোমেন systemd-r 969 systemd-resolve IP310t310 ডোমেন (লিসেন) systemd-r 969 systemd-resolve 15u IPv4 1685575 0t0 UDP ubuntu:48090->_gateway:domain avahi-dae 1028 avahi 12u IPv4 IPv4 23810 0t0 UDP *:mdns81v10vd100 নির্মাণের জন্য Avahi-কৃষি সম্প্রসারণ অধিদপ্তরের 1028 নির্মাণের জন্য Avahi 14u IPv4- র 23812 0t0 এর ফলে UDP *: 58999 নির্মাণের জন্য Avahi-কৃষি সম্প্রসারণ অধিদপ্তরের 1028 নির্মাণের জন্য Avahi 15u IPv6, 23813 0t0 এর ফলে UDP *: 37512 mongod 1173 MongoDB 6u IPv4- র 28149 0t0 বিভিন্ন TCP স্থানীয় হোস্ট: 27017 (শুনুন) mysqld 1266 মাইএসকিউএল 19u IPv4- র 25992 0t0 বিভিন্ন TCP স্থানীয় হোস্ট: mysql (listen) apache2 1283 root 4u IPv6 28140 0t0 TCP *:http (লিসেন) gaurav@ubuntu:~$

এখানে আমরা নেটওয়ার্ক সংযোগের মাধ্যমে খোলা ফাইলগুলির তথ্য দেখতে পারি lsof - i আদেশ

উপসংহার

এই সহজ টিউটোরিয়ালে, আমরা শিখেছি কিভাবে লিনাক্সে একটি প্রক্রিয়ার জন্য খোলা ফাইলগুলিকে ব্যবহার করা সহজ বিভিন্ন পদ্ধতি ব্যবহার করে তালিকাভুক্ত করা যায়। আরো ব্যবহারের জন্য lsof আদেশ, দেখুন lsof ম্যান পেজ