লিনাক্সে ফাইল করার জন্য টেল প্রোগ্রাম আউটপুট


9

আমি জানি যে আমরা কোনও ফাইলে স্ক্রিন আউটপুট পুনঃনির্দেশ করতে নীচের ফর্ম্যাটটি ব্যবহার করতে পারি:

$ your_program > /tmp/output.txt

তবে আমি যখন কমান্ডের নীচে ব্যবহার করেছি, তখন এটি "-বাশ: / হোম / ইউজার / অরফারেন্স.টেক্সট: অনুমতি অস্বীকার করেছে"

sudo tail /var/log/apache2/error.log > ~/errors.txt

এই আউটপুটটি কীভাবে কাজ করবে তা আমি জানতে পারি? ~ / त्रुटी.txt বিদ্যমান নেই। পুনঃনির্দেশ কমান্ডটি ব্যবহার করার আগে আমাকে কি এই টেক্সট ফাইলটি তৈরি করতে হবে?


1
টাইপ করলে কী হয় echo hi > ~/errors.txt? হয় /home/userআপনার সঠিক home ডিরেক্টরিতে (অথবা ব্যাশ একরকম যেখানে আপনার হোম ডিরেক্টরীতে সম্পর্কে বিভ্রান্ত পেতে হয়নি)?
সিজেএম

userকমান্ড চালানো ব্যবহারকারী কি ?
ব্যবহারকারী অজানা

হ্যাঁ, ব্যবহারকারী সেই ব্যবহারকারী যা কমান্ডটি
চালান

এটি সাধারণ আচরণ sudosudoপুনঃনির্দেশের অনুমতি দেয় না। লোকেদের দুষ্টু কাজগুলিতে sudoers.confফাইলটি অন্তর্ভুক্ত না করার জন্য এটি ব্যবহার করতে সক্ষম হওয়ার জন্য অনেকগুলি উপায় । বিকল্প হিসাবে, আপনি sudo bash -c "tail /var/log/apache2/error.log > ~/errors.txt"আপনার বাড়ির দিরের ফাইলগুলিতে ত্রুটিগুলি শেষ করার জন্য দৌড়াতে পারেন।
টিম কেনেডি

উত্তর:


17

পাইপের পিছনে, সুডো কাজ করে না। আমি জানি না আপনি কেন আপনার বাড়িতে লিখতে পারবেন না - সম্ভবত ফাইলটি মূলের অন্তর্ভুক্ত?

 sudo tail /var/log/apache2/error.log | sudo tee ~/errors.txt

পাইপের পিছনে আপনার অন্য ব্যবহারকারী প্রয়োজন। নিশ্চিতভাবেই, আপনার কোনও প্রাইक्सিস্টিং ফাইলের দরকার নেই।


হ্যাঁ, এটি কাজ করেছে ...
জিয়ানলিন

অনুমতি সমস্যার হিসাবে, সম্ভবত $ হোমটি এনএফএস-এর সাথে রুটস্ক্যাশ লাগানো আছে?
আনসগার এসটারম্যান

OME হোমটি এনএফএস মাউন্ট করা হয় না।
জিয়ানলিন

6

আপনি যখন লিখবেন sudo somecommand > ~/errors.txt, যে শেলটি কল করছে sudo(এবং আপনার মতো চলমান রয়েছে) সেগুলি পুনঃনির্দেশ এবং খোলার কাজ করছে ~/errors.txtআপনার লেখার অনুমতি নেই এমন কোনও ফাইলে পুনর্নির্দেশ stdout দেখুন । সাধারণত সেই ক্ষেত্রে সমস্যাটি হ'ল আপনি রুটটি ফাইলটিতে লিখতে চান; এটি করার উপায়গুলির জন্য লিঙ্কিত প্রশ্নটি দেখুন।

এখানে, এটি অদ্ভুত যে আপনি নিজের হোম ডিরেক্টরিতে কোনও ফাইলে লিখতে পারবেন না। সম্ভাবনা হ'ল আপনি পূর্বে কিছু আউটপুট রুট হিসাবে সংরক্ষণ করেছিলেন /home/user/errors.txtএবং সেই ফাইলটি এখন বিদ্যমান এবং এটি রুটের অন্তর্ভুক্ত। ফাইলটি সরান (আপনি যতক্ষণ লেখার অনুমতি পেয়েছেন ততক্ষণ আপনি এটি করতে পারেন /home/user, এবং তারপরে আপনি এটিকে আপনার ব্যবহারকারী হিসাবে তৈরি করতে সক্ষম হবেন)।

rm ~/errors.txt
sudo tail /var/log/apache2/error.log > ~/errors.txt

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


আমি '/ home/user/erferences.txt' মুছে ফেলার চেষ্টা করেছি এবং আপনার উপরের কমান্ডটি ব্যবহার করেছি। এটি কার্যকর হয়নি, তবুও আমাকে হোম ডিরেক্টরিতে লিখতে নিষেধ করুন। যাইহোক আমি অনুমান করি আপনি সরবরাহিত লিঙ্কটি আমার সমাধান হিসাবে ব্যবহার করতে পারে। এটি এই পোস্টে প্রথম উত্তর হিসাবে একই। তবে আপনি কোনও ফাইলে পুনঃনির্দেশ stdout সম্পর্কে কিছু বিশদ ব্যাখ্যা দিয়েছেন এবং এর জন্য আমি আপনাকে ধন্যবাদ জানাই।
জিয়ানলিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.