পরিবর্তে, আমি ব্যবহার করেছি mvcpএটি অর্জনের জন্য আমি কমান্ডটি যে কোনও সফ্টওয়্যার যেদিকে চলছে সেখানে আপনি কিছু লগফিল রাখতে সক্ষম। বিভিন্ন ইউজার হোম ডায়ারে বা অ্যাপ্লিকেশন ডায়ারে থাকতে পারে এবং হার্ডলিংক হিসাবে এক জায়গায় সমস্ত লগ রয়েছে। আপনি যদি mvকমান্ডটি ব্যবহার করেন তবে আপনি হার্ড লিঙ্কটি হারাবেন। cpপরিবর্তে আপনি যদি আদেশটি ব্যবহার করেন তবে আপনি এই হার্ড লিঙ্কটি রাখবেন keep
আমার কোডটি এমন কিছু:
TMP_FILE="$(mktemp "${TMPFILENAME}.XXX")"
for FILE in "${LOGFILE_DIR}"/* ; do
tail -n $MAXLINES "${FILE}" > "${TMP_FILE}"
if [ $(ls -g "${TMP_FILE}" | awk '{print $4}') -lt $(ls -g "${FILE}" | awk '{print $4}') ] ; then
cp "${TMP_FILE}" "${FILE}"
fi
done
সুতরাং যদি ফাইলগুলি একই ফাইল সিস্টেমে থাকে তবে আপনি ব্যবহারকারীদের এবং সেই সাথে কিছু আলাদা অধিকার দিতে পারেন ${LOGFILE_DIR} আমার মতো দৈর্ঘ্য পরিবর্তন করতে পারেন।
যদি হয় mv আদেশটি আপনি ফাইলগুলির মধ্যে হার্ডলিঙ্কটি হারাবেন এবং তাই আপনার দ্বিতীয় ফাইলটি প্রথমটির সাথে বেশি সংযুক্ত না হয় - সম্ভবত অন্য কোনও জায়গায় স্থাপন করা হয়েছে।
অন্য জায়গায় যদি আপনি কাউকে ফাইলটি মুছে ফেলতে না দেন তবে আপনার লগগুলি একসাথে থাকতে পারে এবং আপনার নিজের স্ক্রিপ্টের মাধ্যমে সুন্দর নিয়ন্ত্রণ করা যায়।
logrotateসম্ভবত ভাল। তবে আমি এই সমাধানে খুশি।
"" দ্বারা বিরক্ত হবেন না তবে আমার ক্ষেত্রে স্পেস এবং অন্যান্য বিশেষ অক্ষরের কিছু ফাইল রয়েছে এবং যদি আমি "" কাছাকাছি না করি বা পুরোটা খুব ভাল কাজ করে না।
উদাহরণস্বরূপ একটি দির রয়েছে যেখানে পুরানো ফাইলগুলি একটিতে স্বয়ংক্রিয়ভাবে জিপ হয়ে যায় OLDFILE.zipএবং জিপ করা সমস্ত কিছু ফাইলের তালিকাভুক্ত হয় .zip_logতাই .zip_logএই দিরটিতেও রয়েছে তবে LOGFILE_DIRআমার সাথে রয়েছে:
ln .zip_log "${LOGFILE_DIR}/USER_ZIP_log"
সমান ফাইল হিসাবে এটি একটি হার্ড লিঙ্ক।
logrotateমার্জিত সমাধান