কীভাবে আমি অনুসন্ধানের প্রোগ্রাম থেকে "অনুমতি অস্বীকার করা" মুদ্রণ বিবৃতি সরিয়ে ফেলব?


38

কোড

find / -name netcdf

আউটপুট

find: `/root/.dbus': Permission denied
find: `/root/.gconf': Permission denied
find: `/root/.gconfd': Permission denied
find: `/root/.gnome': Permission denied
find: `/root/.gnome2': Permission denied
find: `/root/.gnome2_private': Permission denied

উত্তর:


35

এই বার্তাগুলি stderr এ প্রেরণ করা হয়েছে, এবং কেবলমাত্র সেই বার্তাগুলিই সাধারণত সেই আউটপুট প্রবাহে দেখা যায়। আপনি এটি বন্ধ বা কমান্ড-লাইনে পুনর্নির্দেশ করতে পারেন।

$ find / -name netcdf 2>&-

অথবা

$ find / -name netcdf 2>/dev/null

এছাড়াও, আপনি যদি রুট ডিরেক্টরিটি অনুসন্ধান করতে যাচ্ছেন (/), তবে প্রায়শই প্রক্রিয়াটি ভাল করা ভাল তাই অনুসন্ধানগুলি সমস্ত সংস্থান ব্যবহার করে না।

$ nice find / -name netcdf 2>&-

এটি সিপিইউতে অন্যান্য প্রক্রিয়াগুলিকে আরও বেশি সময় দেওয়ার অনুমতি দেওয়ার প্রক্রিয়াটির অগ্রাধিকার হ্রাস করে। অবশ্যই যদি অন্য কিছু সিপিইউ ব্যবহার না করে তবে এটি কিছুই করে না। :) প্রযুক্তিগত হতে, এনআই মান (থেকে দেখা যায় ps -l) পিআরআই মান বৃদ্ধি করে। নিম্ন পিআরআই মানগুলির উচ্চ অগ্রাধিকার রয়েছে। ps -lসঙ্গে তুলনা করুন nice ps -l


1
আমি সতর্কতা ছুড়ে দেওয়া পছন্দ করি না। এগুলি পরিচালনা করা আরও ভাল। এছাড়াও, এখানে মাঠে কেউ পালাতে পারেনি।
লিও লোপল্ড হার্টজ 준영

1
@ LéoLéopoldHertz 준영 ভাল ... যদি আপনি প্রোগ্রাম আউটপুট দেখতে পারে না কারণ পুলিশের পর্দা ত্রুটি বিষ্ঠা .. এই যদি হয় যা পূর্ণ ...
chrips

20

আমি এই উত্তরটি উত্তর দিতে চাই, @ গিলস দ্বারা বর্জনিত পথগুলিতে অনুমতিগুলি সম্পর্কে অভিযোগ খুঁজে পাওয়া যায় - ইউনিক্স এবং লিনাক্স স্ট্যাক এক্সচেঞ্জ ; এটি মূলত এমন একটি নির্মাণের সাথে জড়িত findযা এটি অপঠনযোগ্য ডিরেক্টরিতে না নেমে আসে এবং সেই অর্থে সম্ভবত কিছুটা দ্রুতও হয়।

এটি আমার পক্ষে কাজ করবে বলে মনে হবে:

GNU findবা অন্য findযে কোনওটি সমর্থন করে -readableএবং -executableপূর্বাভাস দেয়:

find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print

বা এটিও:

find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print

কোনও কারণে, আমার সমস্তগুলি যুক্ত করা দরকার g+r,u+r,o+r(এটির জন্য শর্টকাটটি a+r), অন্যথায় যদি তাদের মধ্যে একটিও বাদ পড়ে যায় তবে আমি এখনও "অনুমতি অস্বীকার" হিট পেতে পারি।

এখানে আমি কিভাবে দেখতে এই (নোট একটি ভাঙ্গন হয় -a(এবং) অপারেটর মধ্যে findহয় দুই predicates মধ্যে অন্তর্নিহিত ):

find /         # find starting from path /
  -type d        # match type is directory
  ! -perm -a+r   # (and) match not permissions of `r`ead present 
  -prune         # ignore what matched above and do not descend into it
  -o             # or (whatever didn't match above)
  -type f        # match type is file
  -name 'netcdf' # (and) match name is 'netcdf'
  -print         # print what matched above

নোট করুন যে শেষটি না করে -printআমি কিছু অতিরিক্ত আইটেম দেখিয়েছি (যার সাথে কিছু করার নেই -name 'netcdf'); -printনিশ্চিত করে যে শুধুমাত্র নাম মেলে ছাপা হয় (যদি থাকে)।


2
যদি find(1)কোনও ডিরেক্টরিতে না নামতে পারে তবে তা হবে না। সুতরাং আগে যাচাই করা যদি এটি না পারে তবে কেবল কাজ যুক্ত হবে (দুবার পরীক্ষা করুন), এবং এইভাবে এটি ধীর করে দিন।
ভোনব্র্যান্ড

3
@ ভনব্র্যান্ড এটি প্রয়োজনীয় যদি আপনি find'র প্রস্থান স্থিতির উপর নির্ভর করেন কারণ এই অনুমতি ত্রুটিগুলি findশূন্য নয় এমন স্থিতি দিয়ে প্রস্থান করে
আর্নেস্ট এ

আমি আপনার প্রস্তাব কাজ পেতে পারি না। প্রত্যাশিত আউটপুট পূর্ণ হলে আমি কোনও আউটপুট পাই না। unix.stackexchange.com/q/290791/16920 তবে আমি মনে করি অন্যথায় আমি মনে করি আপনার পদ্ধতিটি সবচেয়ে ভাল উপায় to
লিও লোপোল্ড হার্টজ 준영

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

8

locate(1)পরিবর্তে ব্যবহার করুন:

$ locate netcdf

এটি কেবলমাত্র আপনার ব্যবহারকারী দেখতে পাবে এমন ফাইলগুলি আপনাকে প্রদর্শন করবে।


1
এটি ধরে নেওয়া হয় যে updatedbনিয়মিত চলছে। সমস্ত লিনাক্স সিস্টেমে এটি হয় না।
আর্গেজ

3
যদি অবস্থান (1) ইনস্টল করা থাকে তবে এর ডাটাবেসটি পর্যায়ক্রমে আপডেট করা উচিত । যদি এটি না ঘটে থাকে তবে আমি শ্রেণিবদ্ধ করতাম যে ভুল (কনফিগারেশন) এর পরিবর্তে সনাক্তকরণের দোষ (1)। অতিরিক্ত হিসাবে, আপনি সর্বশেষ ডিবি আপডেটের পরে যুক্ত হওয়া কোনও ফাইল সন্ধান করছেন এমন বিরল ক্ষেত্রে এটি হাতে কয়েক মিনিট সময় নেয়। আমি নিজেকে দেখতে পাচ্ছি যে প্রতি বছর আধা ডজন বার, একটি ওভারহেড সহজেই অনুসন্ধান (1) ওভার ফাইন্ড (1) এর গতির সুবিধা থেকে অর্থ প্রদান করে।
ওয়ারেন ইয়ং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.