লিনাক্স: স্টার্ডআউট এবং স্টডারকে লগারে কীভাবে পুনর্নির্দেশ করবেন?


22

আমার একটি প্রোগ্রাম আছে যা আমি প্রারম্ভকালে চালাতে পারি, এটিতে স্টাডআউট এবং স্ট্ডারারের আউটপুট রয়েছে যা আমি লগার কমান্ড ব্যবহার করে সিস্টেম লগটিতে পুনর্নির্দেশ করতে চাই। আমার স্টার্টআপ স্ক্রিপ্টে যা আছে তা হ'ল:

/ home / dirname / application_name -v | লগার 2> & 1 &

এটি স্টডআউটকে সিসলগে পুনর্নির্দেশ করছে ঠিকঠাক তবে স্ট্ডার কনসোলে আসছে তাই আমার কমান্ডটি আরও পরিমার্জন করা দরকার।


উত্তর:


30

এটিতে পাইপ দেওয়ার আগে আপনাকে STDERR এবং STDOUT এর আউটপুট একত্রিত করতে হবে logger। পরিবর্তে এটি চেষ্টা করুন:

/home/dirname/application_name -v 2>&1 | logger &

উদাহরণ

$ echo "hi" 2>&1 | logger &
[1] 26818
[1]+  Done                    echo "hi" 2>&1 | logger

$ sudo tail /var/log/messages
Apr 12 17:53:57 greeneggs saml: hi

আপনি যদি এখানে যথাযথ বাশ শেল (ড্যাশ দিয়ে বিভ্রান্ত না হন) সাবধানতার সাথে ব্যবহার করেন তবে সংক্ষিপ্ত বিবরণটি এখানেও ব্যবহার করতে পারেন:

$ echo "hi" |& logger &

দ্রষ্টব্য: এটি সমান <cmd1> 2>&1 | <cmd2>। আবার কেবল উপরেরটি ব্যবহার করুন যখন একটি আসল বাশ শেলটি ইন্টারেক্টিভভাবে ব্যবহার করার সময় এটির কাছে যাওয়ার ভাল উপায় হবে।

এবিএসজি থেকে উদ্ধৃত অংশ

# | & 2> & 1 | এর সংক্ষেপ হিসাবে বাশ 4 এ যুক্ত হয়েছিল।

তথ্যসূত্র


2
এসএমএল, কোনও অপরাধের অর্থ নয়, তবে পরবর্তী রূপটি বামপন্যাসের অপব্যবহার is এ জাতীয় অপ্রয়োজনীয় শর্টহ্যান্ড যে পরিমাণ ইস্যুগুলির কারণ হতে পারে তা তাদের ব্যবহার থেকে সামান্য লাভ কী হতে পারে তা মোটেই মূল্যহীন নয়। উদাহরণস্বরূপ, এমনকি আপনার নিজের মেশিনেও, আপনি যদি উপরের dashস্ক্রিপ্টটিতে রাখেন এবং বুট প্রক্রিয়ায় ব্যর্থ হওয়ার জন্য এবং শুধুমাত্র আপনার বুট প্রক্রিয়াটি বেলি-আপ করার জন্য স্ক্রিপ্টটি কার্যকর করার চেষ্টা করে ... ভাল ... যখন এই জাতীয় সিনট্যাক্সের উল্লেখ করা উচিত তখন সর্বদা কেবল ইন্টারেক্টিভ শেলগুলির প্রসঙ্গে থাকুন , বা কমপক্ষে আমার মতামত এটি।
মাইক্রজারভ

@ মাইক্রোজার - কোনও অপরাধ নেওয়া হয়নি 8-)। আমি এগুলি অন্তর্ভুক্ত করি যেহেতু তারা এবিএসজি গাইডে রয়েছে। আমি ধরে নিয়েছি (সম্ভবত ভুলভাবে) ওপি বাশকে ব্যবহার করছে যেহেতু তারা দেখিয়েছে 2>&1তবে আপনার সতর্কতাগুলি বেশ বুদ্ধিমানের, উদাহরণস্বরূপ দেওয়া হল স্টার্টআপগুলি নিয়ে কাজ করা। আমি সেই আধুনিক টিপসকে আরও বিশিষ্ট ডাব্লু / একটি সতর্কতা করব যা সেগুলি কেবল ইন্টারফ্যাক্ট কেবল বাশ শেলের জন্য।
SLM

@ মিমকিজার্ - না, এটি দুর্দান্ত পরামর্শ। আমি সাধারণত ড্যাশ বা উবুন্টু ব্যবহার করি না তাই আমি এই বিষয়গুলি থেকে কিছুটা অজ্ঞতা বোধ করি তবে সেগুলি এখনও সত্যই and
SLM

আমি ডেবিয়ানদেরও ব্যবহার করি না, সততার সাথে, তবে আমি আরও বেশি করে সচেতন হয়ে উঠছি যে অনেকেই করেন। আমি ব্যবহার করি dash, যদিও - এটি সত্যই দ্রুত।
মাইকজার্ভ

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