আমি কীভাবে খুঁজে পাব যে কোন প্রক্রিয়া একটি সর্বমোট প্রতিরোধ করছে?


26

যখন আমি করি

sudo umount /media/KINGSTON

আমি পেয়েছি

umount: /media/KINGSTON: device is busy.

আমি সমস্ত উইন্ডোটি বন্ধ করে দিয়েছি এবং নিশ্চিত করে রাখছি যে সমস্ত শেল অন্যান্য ডিরেক্টরিতে নির্দেশ করছে। আমি কীভাবে খুঁজে পাব যে কোন প্রক্রিয়া সর্বশেষ রোধ করছে?


3
আমার মনে হয় আপনি এখানে একটি টাইপো পেয়েছেন, আমি সন্দেহ করি যে আদেশটি ফিরে এসেছে "আমি কীভাবে জানতে পারি যে কোন প্রক্রিয়াটি আমার ব্যান্ডউইথকে খেয়ে ফেলছে?" ...;) আপনি প্রশ্নটি সম্পাদনা করতে পারেন কি না?
8128

উত্তর:


24

একটি টার্মিনাল খুলুন:

fuser -c /media/KINGSTON

এটি এরকম কিছু আউটপুট দেবে:

/media/KINGSTON/: 3106c 11086

এটি আপনাকে এই ভলিউমটি ব্যবহার করে প্রক্রিয়াগুলির পিড দেবে। পিডের শেষে অতিরিক্ত অক্ষরটি কিছু অতিরিক্ত তথ্য দেবে। (3106c তে সি)

সি - প্রক্রিয়াটি ফাইলটিকে তার বর্তমান কার্যকরী ডিরেক্টরি হিসাবে ব্যবহার করছে
এম - ফাইলটি এমএমএপি
ও-র সাথে ম্যাপ করা হয়েছে - প্রক্রিয়াটি এটি একটি ওপেন ফাইল
আর হিসাবে ব্যবহার করছে - ফাইলটি প্রক্রিয়াটির মূল ডিরেক্টরি
টি - প্রক্রিয়াটি অ্যাক্সেস করছে পাঠ্য ফাইল হিসাবে ফাইল
y - এই ফাইলটি প্রক্রিয়াটির জন্য নিয়ন্ত্রণকারী টার্মিনাল

সুতরাং আনমাউন্ট করতে কেবল সেই পিডগুলি মেরে ফেলুন এবং আনমাউন্টটি পুনরায় চেষ্টা করুন

sudo kill -9 3106 11086
sudo umount /media/KINGSTON

দ্রষ্টব্য: এই পিডগুলির সঠিক প্রয়োগের নামটি জানতে আপনি এই আদেশটি ব্যবহার করতে পারেন

cat /proc/<pid>/cmdline

উদাহরণ স্বরূপ : cat /proc/11086/cmdline

এটি নীচের মত কিছু আউটপুট হবে।

    evince^@/media/KINGSTON/Ubuntu-guide.pdf^@

আশা করি এটি সাহায্য করবে


2
ফুজার-কেক এটি মেরে ফেলবে।
জোও পিন্টো

3
আমি প্রথমে -9 বিকল্প ছাড়াই তাদের হত্যার পরামর্শ দেব, সেই অ্যাপ্লিকেশনগুলিকে পরিষ্কারভাবে বন্ধ করার সুযোগ দিতে। এবং আমি ps <pid>কমান্ডের নাম এবং আর্গুমেন্টগুলি দেখতে / proc এ ফাইলগুলি সম্পাদনা করার পরিবর্তে ব্যবহার করার পরামর্শ দেব ।
মারিয়াস গেডমিনাস

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

7

সবচেয়ে দরকারী সরঞ্জামটি হল lsof Lsof ইনস্টল করুন । এটি দেখায় যে কোন প্রসেস দ্বারা ফাইলগুলি ব্যবহৃত হয়। যদি /media/KINGSTONমাউন্ট পয়েন্ট হয় (ডিভাইসের নামটিও কাজ করবে), নিম্নলিখিত কমান্ডটি এই মাউন্ট পয়েন্টে ব্যবহৃত সমস্ত ফাইল দেখায়:

lsof /media/KINGSTON

আপনি যদি এই কমান্ডটিকে সাধারণ ব্যবহারকারী হিসাবে চালনা করেন তবে এটি কেবল আপনার নিজস্ব প্রক্রিয়াগুলিই প্রদর্শন করবে show sudo lsof /media/KINGSTONসমস্ত ব্যবহারকারীর প্রক্রিয়া দেখতে চালান ।

থেকে আউটপুট lsofএই মত দেখাচ্ছে:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
zsh4    31421 gilles  cwd    DIR    8,1     4096 130498 /var/tmp
zsh4    31421 gilles  txt    REG    8,1   550804 821292 /bin/zsh4
zsh4    31421 gilles  mem    REG    8,1    55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4    31421 gilles   12r   REG    8,1   175224 822276 /usr/share/zsh/functions/Completion.zwc

COMMANDকলাম শো প্রোগ্রাম এক্সিকিউটেবল নাম এবং PIDকলাম শো প্রক্রিয়া আইডি। NAMEকলাম ফাইলের নাম দেখায়; আপনি দেখতে পাবেন (deleted)যে ফাইলটি খোলার সময় মুছে ফেলা হয়েছে (যখন কোনও ফাইল মুছে ফেলা হয়, এর আর কোনও নাম থাকে না, তবে এটি ব্যবহারের শেষ প্রক্রিয়াটি ফাইলটি বন্ধ না হওয়া অবধি এখনও বিদ্যমান)। USERস্ব-ব্যাখ্যামূলক হওয়া উচিত। অন্যান্য কলামগুলি সম্ভবত এখানে ব্যতীত গুরুত্বপূর্ণ নয় FD, যা দেখায় যে প্রক্রিয়াটি ফাইলটি কীভাবে ব্যবহৃত হচ্ছে:

  • cwd: বর্তমান ওয়ার্কিং ডিরেক্টরি
  • txt: প্রোগ্রাম এক্সিকিউটেবল
  • mem: একটি মেমরি-ম্যাপযুক্ত ফাইল (এখানে, এটি একটি ওপেন ফাইল হিসাবে মনে করুন)
  • একটি সংখ্যা: একটি প্রকৃত ওপেন ফাইল; পরবর্তী চিঠিটি খোলার মোড নির্দেশ করে যেমন rপড়া এবং wলেখার জন্য

উইন্ডো যেখানে ফাইল খোলা আছে তা সনাক্ত করার কোনও যান্ত্রিক উপায় নেই (এটি বাস্তবে প্রযুক্তিগতভাবে অর্থবহ নয়: যদি কোনও প্রক্রিয়াটিতে কয়েকটি উইন্ডো থাকে তবে একটি ফাইল বিশেষত একটি উইন্ডো বা অন্যটির সাথে যুক্ত থাকে না), এমনকি সনাক্ত করার কোনও সহজ উপায়ও নয় একটি প্রক্রিয়া উইন্ডো (এবং অবশ্যই একটি প্রক্রিয়া কোন উইন্ডো থাকতে হবে না)। তবে সাধারণত কমান্ডের নাম এবং ফাইলের নাম অপরাধীকে সনাক্ত করতে এবং ফাইলটি সঠিকভাবে বন্ধ করার জন্য যথেষ্ট।

আপনি যদি ফাইলটি বন্ধ করতে না পারেন এবং কেবল এটিই শেষ করতে চান তবে আপনি প্রক্রিয়াটি kill 31421( 31421প্রক্রিয়া আইডিটি কোথায় ) বা kill -HUP 31421("হ্যাঙ্গআপ") দিয়ে হত্যা করতে পারেন । প্লেইন হত্যা কৌতুক করতে না হয়, তাহলে চরম কুসংস্কার দিয়ে হত্যা: kill -KILL 31421

এলএসফ , গ্লসফের জন্য একটি জিইউআই রয়েছে , তবে এটি এখনও প্রাইম টাইমের জন্য বেশ প্রস্তুত নয়, এবং এখনও পর্যন্ত উবুন্টুর জন্য প্যাকেজড নেই।

¹ Lsof অন্যান্য ব্যবহারকারীদের এর প্রসেস সম্বন্ধে কিছু তথ্য তালিকাবদ্ধ করতে পারেন, কিন্তু এটি শনাক্ত করতে পারছে না বিন্দু মাউন্ট তাদের তালিকাভুক্ত না হবে যদি আপনি একটি বিন্দু মাউন্ট উল্লেখ করুন।
Ut সম্পাদনযোগ্য ফর্ম্যাটগুলির আলোচনায় প্রায়শই সম্পাদনযোগ্য কোডটিকে পাঠ্য বলা হয়।



2

ইতোমধ্যে fuser কমান্ড অনেক উন্নত হয়েছে। আপনি একটি একক আদেশ দিয়ে পুরো কাজটি করতে পারেন:

$ sudo fuser -ickv /"mountpoint"

কোথায়:

  • পরামিতি kআপত্তিকর প্রক্রিয়াটিকে হত্যা করে,
  • যখন vপ্রক্রিয়া আগাম শো এবং তার ব্যবহারকারী
  • এবং iআপনাকে নিশ্চয়তার জন্য জিজ্ঞাসা করে।

যদি কিছু প্রক্রিয়া প্রতিরোধ করে, তবে fuser -ickv -9(বা আরও সাধারণভাবে -SIGNAL) যা আবার সবচেয়ে হঠকারীকে হত্যা করে তার সাথে আবার চেষ্টা করুন ।
তবে আপনি সর্বদা কিছু "অমর" প্রক্রিয়া পাবেন ...!

এই ক্ষেত্রে আমি ইদানীং ব্যবহার করতে শিখেছি

$ sudo umount --lazy --force <mountpoint>

একটি সর্বশেষ সংস্থান হিসাবে, এখন পর্যন্ত আমার জন্য প্রতিটি সময় কাজ করেছে।


আমি অমর প্রক্রিয়াটি, আমার ব্যবহারের ব্যর্থ চেষ্টা পেয়েছি vboxmanage। -_-
sudo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.