আপনি নিয়ন্ত্রণের বাইরে কিছু লগ পেয়েছেন। রোজ পাগলের মতো মুছে ফেলার পরিবর্তে দ্রুত বর্ধমান ফাইল বা ফাইলগুলি সন্ধান করুন এবং এর ফলে কী হতে পারে তা অনুসন্ধানের জন্য ভিতরে সন্ধান করুন । কিছু প্রোগ্রাম লুপ লগতে কিছু শর্ত ঘুরছে condition হয় সেই প্রোগ্রামটি অক্ষম করুন, এর লগিংটি অক্ষম করুন বা যে শর্তটি সম্পর্কে অভিযোগ করা হচ্ছে তা ঠিক করার চেষ্টা করুন।
যদি কোনও ফাইল আপনার চোখের সামনে বেড়ে চলেছে এবং কোন প্রোগ্রাম এটি লিখছে আপনার কোনও ধারণা নেই তবে আপনি সহজেই এটি সন্ধান করতে পারবেন। এখানে একটি উদাহরণ। কে /var/log/syslog
খোলে? আমরা fuser
কমান্ডটি ব্যবহার করি :
# fuser /var/log/syslog
/var/log/syslog: 602
কেবল একটি প্রক্রিয়া /var/log/syslog
খোলা আছে। এটি প্রক্রিয়া 602. এটি কি? আমাদের সাথে বিরক্ত না যাক ps
এবং grep
কিন্তু তাকান /proc
ফাইলসিস্টেম সরাসরি:
# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd
আহা, এটা rsyslogd
। আমরা বিস্মিত নেই যে rsyslogd
হয়েছে /var/log/syslog/
খোলা।
এই পদ্ধতিটি কাজের গ্যারান্টিযুক্ত নয়। কারণটি হ'ল প্রোগ্রামগুলিতে ফাইলগুলি লেখার জন্য খোলা ইনো রডার রাখতে হবে না। মনে করুন আপনার কাছে এমন একটি প্রক্রিয়া রয়েছে যা কোনও ফাইল খোলায়, এতে যুক্ত হয় এবং তারপরে এটি বন্ধ করে দেয়। আপনার আরও কিছুটা কঠিন তদন্ত হবে। আপনি fuser
"লাল হাতে" প্রক্রিয়াটি অবধি সুযোগ না পাওয়া পর্যন্ত আপনি বহুবার দৌড়াতে পারেন । এই প্রক্রিয়াটি নিজেই অস্তিত্বের মধ্যে andোকা এবং বাইরে যেতে পারে। আরেকটি সমস্যা হ'ল একাধিক প্রক্রিয়াতে ফাইলটি খোলা থাকতে পারে, তবে কেবল একটিই এটি আরও বড় করে তুলছে। সেক্ষেত্রে আপনি তাদের সিস্টেম কলগুলি সনাক্ত করতে পারেন।
# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file: 1234 23459
ওহো! দুটি প্রক্রিয়া এটি খোলা আছে: 1234 এবং 23459। তারা কী করছে তা দেখুন:
# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}
এটি কিছুই করছে না, কেবল একটি select
কলে ব্লক করছে । ট্রেস ভাঙ্গতে Ctrl-C:
select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>
পরেরটি পরীক্ষা করুন:
# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C
উফফ, সে একটানা লিখছে। এটা অবশ্যই খারাপ হতে হবে। এমনকি আমরা এটিও পরীক্ষা করতে পারি যে প্রক্রিয়াটি যে ফাইলটি বর্ণনা করছে 5 এটি আসলে বড় ফাইল:
# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr 3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file
আপনার সন্দেহ নেই যে আপনার কোনও দূষিত ফাইল সিস্টেম রয়েছে তবে পুরো চেক করার জন্য আপনাকে ডিভিডি বুট করতে হবে না।
প্রথমত, আপনার ফাইল সিস্টেমের সর্বাধিক মাউন্ট গণনা সেটিং পর্যালোচনা করুন। Df কমান্ড ব্যবহার করে আপনার পার্টিশনটি সনাক্ত করুন। আমার এখানে উবুন্টু সিস্টেমের উদাহরণ রয়েছে:
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 18062108 5499320 11645284 33% /
udev 392152 4 392148 1% /dev
tmpfs 159768 768 159000 1% /run
none 5120 0 5120 0% /run/lock
none 399416 200 399216 1% /run/shm
/dev/sr0 43668 43668 0 100% /media/VBOXADDITIONS_4.1.4_74291
আপনি দেখতে পারেন যে /
ফাইল সিস্টেমটি মাউন্ট হয়েছে /dev/sda1
। তাই /dev/sda1
রুট পার্টিশন (এবং এই বিশেষ ব্যবস্থায় শুধুমাত্র পার্টিশন) এর স্টোরেজ ডিভাইস।
আসুন সেই ফাইল সিস্টেমের কয়েকটি বৈশিষ্ট্য দেখুন। এটি মাউন্ট করা সত্ত্বেও এটি করা নিরাপদ। কমান্ডটি অনেক আউটপুট দেয়। এখানে একটি অংশ:
$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name: <none>
Last mounted on: /
[ ... SNIP ... ]
Last mount time: Fri Mar 29 17:45:18 2013
Last write time: Tue Mar 5 09:08:03 2013
Mount count: 22
Maximum mount count: 22
[ ... SNIP ... ]
আরে দেখুন, মাউন্ট গণনা সর্বাধিক মাউন্ট গণনার সমান। পরের বার আমি রিবুট করার সময় একটি ফাইল সিস্টেম চেক হবে। গুরুত্বপূর্ণ বিষয়টি হ'ল মাউন্ট গণনাটি একটি ইতিবাচক মান। যদি আপনার শূন্য হয় তবে এটি 22 ব্যবহার করে কিছু ধনাত্মক মানতে পরিবর্তন করুন tune2fs -c 22 /dev/whatever
। জিরো মানে পার্টিশনটি যতবার মাউন্ট করা যায় তা নির্বিশেষে কোনও চেক কখনও জোর করা হয় না। খুব কমই পুনরায় বুট করা সিস্টেমগুলির এখানে কম মান থাকা উচিত। একটি সার্ভার যা বছরে একবার নিচে যায় সম্ভবত প্রতিবার রিবুট হওয়ার সাথে সাথে fsck ব্যবহার করতে পারে। আপনি তারিখ-ভিত্তিক চেক অন্তরও সেট করতে পারেন।
এখন একটি চেক জোর করতে, আপনি প্রকৃত গণনা সর্বাধিকের চেয়ে বড় বা সমান হতে ওভাররাইড করতে পারেন এবং তারপরে পুনরায় বুট করতে পারেন। যে রাজধানী সম্পন্ন C
: tune2fs -C 1234 /dev/whatever
। পার্টিশনটি দেখে মনে হচ্ছে এটি চেক ছাড়াই 1234 বার মাউন্ট করা হয়েছে যা এক বা দুই-অঙ্কের সর্বোচ্চের চেয়ে বড়।
sudo du -sh /var/* ~/.xsession-errors
দয়া করে? (এই দুটি জায়গা আমি বোকামি করে কিছু আছে তবে আমি উড়ে যাব বলে আশা করব)। অন্যথায়, আমি এলিয়ার সাথে আছি - এটি ডিস্ক সমস্যার সূচক। এটিকে গুরুত্ব সহকারে নিন।