প্রতিদিন বিভিন্ন পরামিতি সহ ক্রোনজব চালাচ্ছেন


12

আমি একজন প্রোগ্রামার, এবং ক্রোন সম্পর্কে অনেক কিছুই জানি না, তবে এটি সম্ভব কিনা তা আমি জানতে চাই।

ধরুন আমার কাছে একটি অ্যারে [option1, option2, option3]এবং একটি স্ক্রিপ্ট রয়েছে যা আমি নোডজেএসে চালিত করি script.js। আমি এই স্ক্রিপ্টটি প্রতিদিন সকাল 1 টায় চালাতে চাই। এর cronআদেশটি হ'ল:

0 1 * * * node ~/script.js

ঠিক আছে, এখন জটিল অংশটি, আমি প্রতিটি দিন বিকল্পগুলি ঘোরানো চাই, সুতরাং উদাহরণস্বরূপ সোমবার আমি চালাতে চাই node ~/script.js option1, পরের দিন node ~/script.js option2এবং আরও অনেক কিছু। এছাড়াও, আমি প্রয়োজনে বিকল্পগুলি যোগ / অপসারণ করতে সক্ষম হতে চাই, তবে ঘূর্ণনটি অক্ষত থাকতে হবে।

এটি কি কোনওভাবেই সম্ভব? আমি জানি আমি এটি নোডের মধ্যেও করতে পেরেছিলাম, তবে আমি এটি স্ক্রিপ্টের বাইরে থেকে করব এবং স্ক্রিপ্টটি যেমন আছে তেমন রেখে দেব।


2
ক্রোন নিজে থেকে এটি করার চেষ্টা করে আমি এই বনাম স্ক্রিপ্ট করার পরামর্শ দিচ্ছি।
আর্থলেলন

উত্তর:


15

এছাড়াও, আমি প্রয়োজনে বিকল্পগুলি যোগ / অপসারণ করতে সক্ষম হতে চাই, তবে ঘূর্ণনটি অক্ষত থাকতে হবে।

এটাই কৌতুকময়। বিকল্পগুলির তালিকা সংশোধন করার পরে আবর্তনটি অক্ষত থাকার অর্থ কী? সর্বোপরি, আপনি তালিকাটি সম্পূর্ণরূপে পুনর্নির্মাণ করতে পারবেন এবং আপনি কোথায় ছিলেন সে সম্পর্কে কোনও ক্লু বিনষ্ট করে দিতে পারেন।

আপনি যা করতে পারেন তা হ'ল ফাইলগুলির সাথে একটি ডিরেক্টরি সেট আপ করা যা আপনার বিকল্পগুলির প্রতিনিধিত্ব করে (হয় তাদের ফাইলের নাম, বা তাদের সামগ্রীর মাধ্যমে)। তারপরে যখনই ক্রোন জব এক্সিকিউট হয়, আপনি সেই ডিরেক্টরিটি তালিকাভুক্ত করবেন, সর্বশেষ পরিবর্তনের সময় অনুসারে ফাইলগুলি বাছাই করুন। আপনি প্রাচীনতম এন্ট্রিটি গ্রহণ করেন, touchসেই ফাইলটি পরিবর্তনের সময়টিকে বর্তমান সময়ে পরিবর্তন করতে, তারপরে স্ক্রিপ্টটি চালানোর জন্য এটি ব্যবহার করুন।

#!/bin/bash
cd ~/script-options
next=$(ls -rt | head -n1)
touch -- "${next}"
node ~/script.js ${next} or $(<"${next}")

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

বিকল্পগুলি যুক্ত করার অর্থ বিকল্প ডিরেক্টরিতে নতুন ফাইল যুক্ত করা। অপশন অপসারণ মানে ফাইল মুছে ফেলা। যে কোনও মুহুর্তে, সবচেয়ে পুরনো ফাইলটি হ'ল পরবর্তীটি চালানো, সুতরাং চক্রের একেবারে শেষে নতুন বিকল্পগুলি যুক্ত করা হবে, যেন সবেমাত্র চালানো হয়েছে। আপনি যদি বিকল্পগুলি পুনরায় অর্ডার করতে চান তবে আপনি যে কোনও ক্রমে সেগুলি স্পর্শ করতে পারেন।


আপনি "তালিকা সম্পাদনাগুলি" জুড়ে বিকল্প ক্রমানুসারে পরিচালনা করার জন্য একেবারে +1।
হেগেন ভন ইটজেন

উত্তরের জন্য ধন্যবাদ, আমি এটি পছন্দ করি এবং এটি ব্যবহার করব। আমি তালিকায় যখন নতুনকে যুক্ত করি তখন ঘূর্ণনের সঠিক ক্রমটি তেমন গুরুত্বপূর্ণ নয়। কেবলমাত্র গুরুত্বপূর্ণ বিষয় হ'ল তারা সকলেই প্রতি সপ্তাহে 1-2 করে রান পান, এবং একই দিনে দু'জন নয়।
সাইফ বেকহান

2
$(ls -rt | head -n1)অবশ্যই নতুন লাইনের অন্তর্ভুক্ত ফাইলের নামগুলি ভেঙে ফেলবে, তবে এই উদ্দেশ্যে আপনি সম্ভবত "এটি করবেন না" দিয়ে পালাতে পারবেন।
সিজেএম

20

ধরা যাক আপনি সপ্তাহের প্রতিটি দিনের জন্য আলাদা বিকল্প চান। আপনি পারেন:

  1. এগুলির জন্য আলাদা ক্রোন জব করুন:

    0 1 * * 0 node ~/script.js option1
    0 1 * * 1 node ~/script.js option2
    0 1 * * 2 node ~/script.js option3
    

    ইত্যাদি ...

  2. আছে bashআপনার জন্য পছন্দসই অপশন প্রদান:

    0 1 * * * node ~/script.js case `date +%u` in 0 ) echo option1 ;; 1 ) echo option2 ;; 2 ) echo option3 ;;  esac
    

    (আমি উত্তরোত্তরটি চালাইনি, সুতরাং এটির জন্য কিছু টুইট করার প্রয়োজন হতে পারে - তবে এটি সাধারণ ধারণা))


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

13

না, আমি এটি করার কোনও পরিষ্কার উপায়ের কথা ভাবতে পারি না। কেবল একটি সাধারণ শেল র‍্যাপার স্ক্রিপ্ট লিখুন যা তারিখটি পরীক্ষা করে এবং প্রতিদিন আপনার প্রয়োজনীয় বিকল্পগুলির সাথে আপনার নোড অ্যাপ্লিকেশন শুরু করে।


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