ক্রোনে অক্ষরগুলি ছেড়ে যাওয়া


9

কমান্ড প্রম্পট থেকে প্রত্যাশিত হিসাবে নিম্নলিখিতটি কাজ করে। তবে ক্রোন থেকে এটি কাজ করে না।

mysqldumpslow <(tail -1000 `mysqladmin variables \
    | grep slow_query_log_file | awk '{print $4}'`) \
    | mail -s "slow log from `hostname` sorted by time" shantanu.oak`hostname`@gmail.com \
    > /root/slow_succ.txt 2> /root/slow_err.txt

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

/bin/sh: -c: line 0: syntax error near unexpected token `('

নির্দিষ্ট অক্ষরগুলি ক্রোন থেকে পালাতে হবে? বা ক্রোন-এ সাব-শেল নিয়ে এটি কোনও সমস্যা?


উত্তর:


13

আমি SvenW যা বলেছিলাম তা প্রসারিত করব এবং উল্লেখ করে যে আমি এই কমান্ডটি দুটি কারণে একটি স্ক্রিপ্টে রাখব:

  1. এটি ক্রোন্টাবের অক্ষরগুলি পালনের ক্ষেত্রে কোনও সমস্যা এড়িয়ে যায়।
  2. এটি আপনাকে আপনার সহ-প্রশাসকদের কাছে স্পষ্টভাবে নির্দেশ করতে দেয় যে আপনি তৈরি করেছেন এমন এক-লাইন যাদুটিকে ডিক্রিপ্ট করে তাদের চক্রের কোনও অপচয় না করেই কাজটি কী করে। যেমন স্ক্রিপ্ট কল /root/bin/dump_mysql_tables_and_email_failure_report.sh। আপনি অন্য প্রশাসকদের সাথে একটা পরিবেশে নাও হতে পারে, কিন্তু এই মনে করিয়ে দিতে ভোগ করতে হবে আপনি কি নরক আপনি এখন থেকে একটি বছর চিন্তা ছিল! :)

2
"এখন থেকে আপনি কী এক বছর ধরে ভাবছিলেন!"!
টনি

5

ক্রোন পলায়নের সমস্যাগুলির সহজ সমাধান: কমান্ডটি নিজস্ব শেল স্ক্রিপ্টে রাখুন এবং ক্রোন থেকে এই স্ক্রিপ্টটি কল করুন।


5

এটি কাজ না করার কারণটি তা cronনয় bash। বন্ধনী ব্যবহার করে একটি সাবশেল তৈরি করা বাশ সিনট্যাক্সের অংশ। এটির একটি সূত্রটি ত্রুটি বার্তার প্রথম "শব্দ" এর মধ্যে রয়েছে।

আপনি ইতিমধ্যে আপনার সাবশেলের অভ্যন্তরে ব্যাকটিক ব্যবহার করছেন যাতে আপনি সেগুলি আবার ব্যবহার করতে না পারেন সে ব্যাকটিক্স একটি সাব-শেল তৈরির জন্য কাজ করবে।

অন্যরা ইতিমধ্যে বলেছে, একটি স্ক্রিপ্ট লিখুন এবং ক্রোন থেকে কল করুন।

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