খুঁজে বের করুন: সিগন্যাল 13 ত্রুটি দ্বারা 'ls' অবসান [সদৃশ]


2

এই প্রশ্নটি ইতিমধ্যে একটি উত্তর আছে:

আমার স্ক্রিপ্ট

log=$HOME/Deleted/$(date)
find $HOME/OldLogFiles/ -type f -mtime -7 -exec ls -latr {} \; -exec echo was deleted on `date` \; -exec rm -f "{}" \;|paste - - >> $log

স্ক্রিপ্টের জন্য আমার লক্ষ্যটি x এর পরিমাণের পুরানো ফাইলগুলি মুছে ফেলার এবং তারপর একটি ফাইলে লগ-ইন করুন এবং ফাইলের নাম, তারিখ মুছে ফেলা, এবং এটি কত পুরানো ছিল তা প্রদর্শন করুন। আমি এই ত্রুটি পেয়ে রাখা যদিও ...

./test.sh: line 3: $log: ambiguous redirect
find: ‘ls’ terminated by signal 13
find: ‘ls’ terminated by signal 13

কেউ কি কোন পরামর্শ আছে?


আপনি এখানে অর্জন করার চেষ্টা করছেন ঠিক কি আপনি ব্যাখ্যা করতে পারেন? এটি যে কেউ আপনার প্রশ্নের উত্তর দেওয়ার পাশাপাশি অনুরূপ প্রশ্নগুলির জন্য অনুসন্ধান করার চেষ্টা করবে।
Andrew Lott

নিশ্চিত আমি আপনার জন্য এটি আপডেট।
mkrouse

1
Downvote, কারণ এটি একটি অনুসরণ আপ superuser.com/q/612930/195224
mpy

1
আপনাকে স্বাগতম. শুধু তাই আপনি জানেন, @ এমপিই কেবল একজন ভাল SU ব্যবহারকারী হতে চেষ্টা করছে, আমি নিশ্চিত যে তার কাছে আপনার নিজের বিরুদ্ধে কিছুই নেই এবং আমার কাছে এর মানদণ্ডের প্রতি শ্রদ্ধা নেই তার উত্তর । আমরা শুধু এই নির্দিষ্ট বিন্দুতে অসম্মতি।
terdon

1
দ্য -a বিকল্প ls ফাইল যুক্তি (গুলি) প্রয়োগ করা অর্থহীন। ( ls –l .bashrc ঠিকভাবে কাজ করে; আপনি বলতে হবে না ls –la.) এবং -t এবং -r অপশনগুলি শুধুমাত্র অর্থপূর্ণ যখন আপনি একাধিক আর্গুমেন্ট, অথবা একটি (বা আরো) ডিরেক্টরি যুক্তি। সুতরাং, যেহেতু আপনি বলছেন -type f, আপনি ঠিক যেমন বলতে পারে -exec ls -l {}
Scott

উত্তর:


1

প্রথমত, আপনার পূর্ববর্তী প্রশ্নের উপর ভিত্তি করে, আপনি চান -mtime +7 7 দিন বা পুরোনো জন্য। -mtime -7 মানে 7 দিন বয়সী বা নতুন।

দ্য ambiguous redirect ভুল সম্ভবত যে মানে $log সংজ্ঞায়িত করা হয় নি. আমি আপনার পুনরুত্পাদন করতে পারবেন না find: ‘ls’ terminated by signal 13 এটি সম্ভবত আপনার প্রশ্নের মধ্যে ফোল্ডারে নির্দিষ্ট ফাইলের উপর নির্ভর করে। আপনি কোথাও ফাইল তালিকা পোস্ট করতে পারে?

যাই হোক, signal 13 একটি ভাঙ্গা পাইপ মানে তাই কিছু ভুল যাচ্ছে। আপনি মাধ্যমে এই কমান্ড পাইপ হয় head অথবা tail অথবা সাদৃশ্যপূর্ণ? এটি ব্যবহার করে দেখুন এবং আপনি একই ত্রুটিগুলি পান কিনা তা দেখুন:

find $HOME/OldLogFiles/  -type f -mtime +7 -exec stat -c "%n %y"  "{}" \; -exec echo was deleted on `date` \; |paste - - >>$log

1
ambiguous redirection এছাড়াও সাদা স্পেস দ্বারা সৃষ্ট হতে পারে $log; bash এই চেষ্টা করুন: log=$(date); echo foo > $log, এই ব্যর্থ, যখন log=$(date); echo foo > "$log" জরিমানা কাজ করছে।
mpy

1
ওয়েল, এখানে টুকরা একত্রিত করা: যদি কিছু সম্পর্কে আছে $log (যেমন unescaped, unquoted এমবেডেড স্পেস) যে তোলে >> $log ব্যর্থ, তারপর যে মানে paste প্রক্রিয়া শুরু হয় না, এবং তাই find কিছুই মধ্যে পাইপ হয়। কিন্তু find তার মান আউটপুট লেখা হয় না; এটি শুধুমাত্র শিশু প্রসেসের spawning ( ls এবং echo ) সেটা কর. ( rm একই stdout শেয়ার করুন; অর্থাৎ, ভাঙা পাইপ, কিন্তু এটি এটিকে কিছু লিখতে পারে না।) সুতরাং, প্রতিবার find কাঁটাচামচ / execs ls এবং ls লিখেছেন, এটি একটি ভাঙ্গা পাইপ সংকেত পায়।
Scott

একমাত্র প্রশ্ন হলো কেন? echo একই আচরণ প্রদর্শন? আমি এটা সম্ভবত যে কিছু করতে হবে অনুমান echo একটি শেল নির্মিত কমান্ড।
Scott
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.