রায়ান এর পোস্টটি একটি আকর্ষণীয় ধারণা দেয়, তবে এটি বেশ কয়েকটি ক্ষেত্রে ব্যর্থ। পরীক্ষার সময় tail -f /var/log/syslog | xargs -L 1 echo $(date +'[%Y-%m-%d %H:%M:%S]') $1
, আমি লক্ষ্য করেছি যে টাইমস্ট্যাম্প একই stdout
পরে থাকে এমনকি পরে কয়েক সেকেন্ডের ব্যবধানের সাথে আসে। এই আউটপুট বিবেচনা করুন:
[2016-07-14 01:44:25] Jul 14 01:44:32 eagle dhclient[16091]: DHCPREQUEST of 192.168.0.78 on wlan7 to 255.255.255.255 port 67 (xid=0x411b8c21)
[2016-07-14 01:44:25] Jul 14 01:44:34 eagle avahi-daemon[740]: Joining mDNS multicast group on interface wlan7.IPv6 with address fe80::d253:49ff:fe3d:53fd.
[2016-07-14 01:44:25] Jul 14 01:44:34 eagle avahi-daemon[740]: New relevant interface wlan7.IPv6 for mDNS.
আমার প্রস্তাবিত সমাধানটি একই রকম, তবে সঠিক সময়-স্ট্যাম্পিং সরবরাহ করে এবং এর printf
চেয়ে কিছুটা বেশি পোর্টেবল ব্যবহার করেecho
| xargs -L 1 bash -c 'printf "[%s] %s\n" "$(date +%Y-%m-%d\ %H:%M:%S )" "$*" ' bash
কেন bash -c '...' bash
? -c
বিকল্পের কারণে , প্রথম যুক্তি নির্ধারিত হয় $0
এবং আউটপুটটিতে প্রদর্শিত হবে না। এর সঠিক বিবরণের জন্য আপনার শেলের ম্যানুয়াল পৃষ্ঠাটি দেখুন Consult-c
এই সমাধানটি পরীক্ষা করে tail -f /var/log/syslog
এবং (যেমন আপনি সম্ভবত অনুমান করতে পারেন) আমার ওয়াইফাইকে সংযোগ বিচ্ছিন্ন এবং পুনরায় সংযোগ স্থাপন, উভয় date
এবং syslog
বার্তাগুলির দ্বারা সরবরাহিত যথাযথ টাইম-স্ট্যাম্পিং দেখিয়েছে
বাশ কোনও বোর্ন-জাতীয় শেল দ্বারা প্রতিস্থাপিত হতে পারে, হয় ksh
বা dash
কমপক্ষে -c
বিকল্প রয়েছে এমনগুলি দিয়ে সম্পন্ন করা যেতে পারে ।
সম্ভাব্য সমস্যা:
সমাধানটির দরকার হয় xargs
, যা পসিএক্স অনুবর্তী সিস্টেমগুলিতে উপলব্ধ, তাই বেশিরভাগ ইউনিক্সের মতো সিস্টেমগুলি beেকে রাখা উচিত। স্পষ্টতই যদি আপনার সিস্টেমটি পজিক্স-নন বা পসিক্স অনুগত হয় বা কাজ করে নাGNU findutils