/ dev / নাল ফাইলটি নিয়মিত ফাইল হয়ে গেছে


19

আমাদের প্রোডাকশনে সার্ভার হঠাৎ করে /dev/nullএকটি নিয়মিত ফাইল হয়ে যায় এবং এর ফলে এসএসডি সার্ভিস বন্ধ হয়ে যায় এবং সার্ভারটিতে লগইন করতে সক্ষম হয় না। এবং আমরা অক্ষর ডিভাইস ফাইলে ফিরে কনফিগার করতে নীচের পদক্ষেপগুলিতে চেষ্টা করেছি,

rm -rf /dev/null
mknod /dev/null c 1 3

আমরা চালানোর সাথে সাথে rmকমান্ডটি চালানোর /dev/nullআগে একটি নিয়মিত ফাইল হিসাবে পুনরায় তৈরি করা হবে mknod। এটি কীভাবে ঘটছে এবং কোন উপাদানটি এই ফাইলটি তৈরি করছে তা আমরা বুঝতে পারি না can't সুতরাং আমরা এই সমস্যাটি সমাধান না করা পর্যন্ত আমরা /dev/nullঅক্ষর ডিভাইস ফাইল হিসাবে তৈরি করতে অক্ষম ।


আপনি সার্ভারে কোন ওএস এবং রিলিজ ব্যবহার করছেন? udev ফাইল তৈরি করতে পারে।
পিটিম্যান

সেন্টোস 5.2 এবং আপনি দয়া করে কীভাবে এই ফাইলটি তৈরি করছেন তা দয়া করে ব্যাখ্যা করতে পারেন।
ব্যবহারকারী 197719

man fuser, আপনি কোনও ফাইল অ্যাক্সেস করতে একটি প্রক্রিয়া খুঁজে পেতে এবং এটি হত্যা করতে পারেন। আপনি এই জাতীয় ফাইল - ম্যান চ্যাটারে একটি বৈশিষ্ট্য স্থাপন করতে পারেন।
জিরিব

আমার হাতে কোনও সেন্টো মেশিন নেই, তবে /lib/udev/rules.d/50-udev-default.rules/dev/null
ওবুন্টু

3
lsof /dev/nullতোমার বন্ধু.
অ্যান্ড্রু বি

উত্তর:


29

আপনি যখন (আরএম) / dev / নাল মুছবেন তখন যে কোনও প্রোগ্রাম / স্ক্রিপ্ট চলছে যা "> / dev / নাল" বা সমতুল্য প্রয়োজন সেই নামটি দিয়ে নতুন (নিয়মিত) ফাইলটি পুনরায় তৈরি করবে। এবং এগুলি যে কোনও সময় স্পোন করতে পারে (এবং কেউ কেউ এটি অবিরত লিখতেও পারে)

তাদের মারতে:

আপনি একটি নতুন / দেব / নাল বিশেষ ফাইল তৈরি করেন (ভিন্ন নামের অধীনে)

mknod /dev/newnull c 1 3
chmod 777 /dev/newnull

এবং আপনি এটিকে অবিচ্ছিন্নভাবে তৈরি করেছেন (রুট হিসাবে):

mv -f /dev/newnull /dev/null

এবং কেবলমাত্র তখনই আপনি পুনরায় বুট করতে পারেন (যথাযথ / ডিভ / নাল ফাইল জায়গায় রিবুট করবেন না ... এটি সাধারণত সহজ নয়) [আমি সেই পদক্ষেপটি ভুলে গিয়েছিলাম, যা অবশ্যই প্রয়োজনীয় course অনুস্মারকটির জন্য @ র্যান্ডম 832 ধন্যবাদ!]

আপনাকে শেষের দিকে পুনরায় বুট করতে হবে, বিদ্যমান প্রোগ্রামটি থেকে মুক্তি পাওয়ার জন্য যাদের এখনও "/ dev / নাল" খোলা থাকবে এবং এখনও ফাইল সিস্টেমটি লিখে ফেলবেন যদিও আপনি পরে এটি প্রতিস্থাপন করেছেন, সেই ফাইল সিস্টেমটি অল্প অল্প করে পূরণ করবেন) (আসলেই যেমন কোনও ফাইল মুছে ফেলার সময়, যে ফাইল প্রোগ্রামটি এখনও সেই ফাইল বর্ণনাকারী খোলা আছে এখনও পূর্বের ইনোডে লিখতে সক্ষম হবে, যদিও ফাইলের নামটি এখন নতুনটির দিকে ইঙ্গিত করছে)


2
তারপরেও তারপরে সার্ভারটি পুনরায় চালু করা উচিত - সাধারণ ফাইলে লিখতে শুরু করা যে কোনও কিছুই মুছে ফেলা ফাইলটিতে লেখা এবং ডিস্ক স্পেস ব্যবহার করা চালিয়ে যাবে।
র্যান্ডম 832

@ র্যান্ডম 832: খুব সত্য, তবে নতুন কোনও সঠিক / দেব / নাল জায়গায় রাখার পরে কমপক্ষে রিবুট করা অনেক সহজ ... ( বহু প্রোগ্রাম এবং স্ক্রিপ্টগুলি সঠিকভাবে কাজ করার জন্য এটি নির্ভর করে)
অলিভিয়ার ডুলাক

8

আপনি দৌড়ে lsof /dev/nullগিয়ে দেখতে পেলেন যে কোনও প্রক্রিয়া রয়েছে যা এটি খোলা আছে তবে এটি বাস্তব সময়ে কী ঘটছে তা আপনাকে দেখাবে না।

আর একটি বিকল্প হ'ল ডিভাইসটি তৈরি করে এটিকে জায়গায় স্থানান্তরিত করা।

mknod /dev/null.tmp c 1 3 && mv /dev/null.tmp /dev/null

তবে আমি প্রথমে সিস্টেমটি কী ভাঙ্গছে তা জানতে চাই। আপনি কি এমন কিছু পরিবর্তন করেছেন যা এর কারণ হতে পারে?


7

আপনি পুনরায় তৈরি করতে না পারার কারণটি /dev/nullসম্ভবত কোনও কিছু এটি স্বাচ্ছন্দ্যে লিখছে:

echo "foo" > /dev/null

ফাইলটির বিষয়বস্তু পরীক্ষা করা আপনাকে বলবে যে এটি কী প্রক্রিয়া হতে পারে।

আপাতত আপনার সিস্টেমটি ঠিক করতে, এই নির্দেশাবলী অনুসরণ করুন:

  1. সিস্টেম বন্ধ
  2. সঙ্গে বুট init=/bin/bash
  3. পুনঃসমাংশ / লেখার যোগ্য
  4. চর ডিভাইস তৈরি করুন
  5. পুনরায় বুট করার

/ ডি / নাল কীভাবে মুছে ফেলা হয়েছে তা নির্ধারণ করার জন্য আমি সিস্টেমটির তীব্র পরীক্ষা করার জন্য দৃ strongly়তার সাথে পরামর্শ দেব। আপনার সিস্টেমটি আপোস না হয়েছে তা নিশ্চিত করুন, আপনার সিস্টেমের লগটি পুরোপুরি পরীক্ষা করুন।


4

আমি আমার আর্চলিনাক্স সিস্টেমে কারণ এবং সমাধানটি পেয়েছি।

আপনি যদি ব্যাশ ব্যবহার করেন এবং হিস্টফিল = / dev / নাল পরিবেশে থাকে, আপনার $ HISTFILESIZE বা IST HISSIZE এর চেয়ে বেশি কমান্ড চালানো উচিত নয়। আপনি যদি হ্যাশফিলটি / দেব / নাল থাকাকালীন বাশের উপরে $ HISTFILESIZE এর চেয়েও বেশি কমান্ড কার্যকর করেছেন এবং আপনি ব্যাশ, ব্যাশ মুভ / দেব / নাল অন্য কোথাও প্রস্থান করেছেন এবং 600 / অনুমতি সহ নিয়মিত ফাইল হিসাবে / দেব / নালটিকে পুনরায় তৈরি করেন।

আপনি যদি ইম্যাক্স 24.4 এ ট্র্যাম্প ব্যবহার করেন তবে ট্রাম্প-শেলই HISFILE কে / dev / নাল হিসাবে সেট করে। সুতরাং, যদি বাশ শিকড়ের শেল হয় এবং আপনি যদি ইমাস 24.4 এ ট্র্যাম্পের সাহায্যে প্রচুর রুট অপারেশন করেন, আপনি যখন ইমাস মারবেন, ট্রাম্প বাশকে মুছে ফেলবে / দেব / নাল।

অনুগ্রহ করে HISFILE কে .bashrc বা / emacs এর মতো প্রোগ্রামগুলিতে / dev / নাল সেট করা আছে কিনা তা পরীক্ষা করুন।

আমার ক্ষেত্রে, শেলটি zsh এ পরিবর্তন করা চারপাশে কাজ করে যে ট্রাম্প ইশ্যাক্স 24.4 এ ব্যাশ মুছতে / দেব / নাল করে তোলে।


/ Dev / নাল থেকে HISTORY লেখার কোনও কারণ নেই। সম্পূর্ণরূপে HISTORY অক্ষম করার জন্য আপনার HISSIZE "0" এ সেট করা উচিত।
টিম হেইগলে

আপনি unset HISTFILE/ dev / নালকে কিছু না করে ইতিহাস অক্ষম করার জন্যও করতে পারেন ।
মাইকেল হ্যাম্পটন

যাইহোক, ইম্যাক্স 24.4 এ ট্র্যাম্প- sh.el হিস্টফিলকে / dev / নাল হিসাবে সেট করে এবং আপাতত আমি এর জন্য কিছুই করতে পারি না। আমি সমস্যাটি সমাধান করার জন্য / বিন / ড্যাশ থেকে / বিন / ডাবলীতে সংযুক্ত করেছি।
ক্রকেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.