ইন্টারেক্টিভ সম্পাদক ছাড়া স্বয়ংক্রিয়ভাবে ব্যাশ ব্যবহার করে ক্রোন জব তৈরি করবেন কীভাবে?


395

ক্রোনটাবের সম্পাদক (ক্রন্টব-ই) ব্যবহার না করে ক্রোন জব তৈরির পক্ষে যুক্তি রয়েছে কি? যদি তা হয় তবে বাশ স্ক্রিপ্ট থেকে কোডটি ক্রোনজব তৈরি করে কী হবে?



5
দুঃখের বিষয়, এখানে বেশিরভাগ শীর্ষস্থানীয় উত্তরগুলি কেবল ক্রোনটবকে কীভাবে সংশোধন করতে পারে তা দেখানো হচ্ছে - যথাযথভাবে নিরাপদ উপায়ে - তবে আমি মনে করি এটি সামগ্রিকভাবে ভুল পদ্ধতির। File ron cron.d}} এ একটি ফাইল ফেলে দেওয়া সবচেয়ে নিরাপদ এবং সহজ and
গ্রেগম্যাক

উত্তর:


539

আপনি ক্রন্টবটিতে নিম্নলিখিত হিসাবে যুক্ত করতে পারেন:

#write out current crontab
crontab -l > mycron
#echo new cron into cron file
echo "00 09 * * 1-5 echo hello" >> mycron
#install new cron file
crontab mycron
rm mycron

ক্রোন লাইন ব্যাখ্যা

* * * * * "command to be executed"
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

উত্স nixCraft


14
আপনার টেম্পাইল বা এমকেটেম্প ব্যবহার করা উচিত
পাউয়ে পোলেভিজ

166
(crontab -l; প্রতিধ্বনি "00 09 * * 1-5 ইকো হ্যালো") | crontab -
এডো

32
(crontab -l ; echo "00 09 * * 1-5 echo hello") | crontab -- এডোর উত্তরটি অনুলিপি করা সহজ
WBAR

8
আমি যে পরিবর্তন করার সুপারিশ করছি ;সঙ্গে &&কেস যদি বিরুদ্ধে একটি নিরাপদ-রক্ষী হিসেবে crontab -lব্যর্থ। সুতরাং, যেমন:(crontab -l && echo "0 0 0 0 0 some entry") | crontab -
ম্যাকউউজারগুলি

12
@ ম্যাক ইউজারস, crontab -lকোনও ক্রন্টব না থাকলে ব্যর্থ হয়, তাই &&স্ক্রিপ্টটির জন্য ক্রন্টব- এ প্রথম প্রবেশকে যুক্ত করা অসম্ভব করে তোলে।
JPhi1618

312

আপনি ফ্লাইটে এটি করতে সক্ষম হতে পারেন

crontab -l | { cat; echo "0 0 0 0 0 some entry"; } | crontab -

crontab -lবর্তমান ক্রন্টব কাজগুলি তালিকাভুক্ত করে, catএটি মুদ্রণ করে, echoনতুন কমান্ড মুদ্রণ করে এবং crontab -সমস্ত মুদ্রিত সামগ্রী ক্রন্টব ফাইলটিতে যুক্ত করে। আপনি একটি নতুন করে প্রভাব দেখতে পারেন crontab -l


3
ধন্যবাদ, আপনি সিনট্যাক্সটি ব্যাখ্যা করতে পারেন, বা কোনও ইউআরএল নির্দেশ করতে পারেন যা এটি ব্যাখ্যা করে?
সাইটগুলি

9
crontab -lবর্তমান ক্রন্টব জব তালিকাবদ্ধ করে, catএটি মুদ্রণ করে, echoনতুন কমান্ড মুদ্রণ করে এবং crontab -সমস্ত মুদ্রিত সামগ্রী ক্রন্টব ফাইলটিতে যুক্ত করে। আপনি একটি নতুন করে প্রভাবটি দেখতে পাচ্ছেনcrontab -l
nha

3
আমার জন্য ট্রিট কাজ করে। যদি ব্যবহারকারীর কোনও বিদ্যমান ক্রোনট্যাব না থাকে তবে আপনি দেখতে পাবেন no crontab for <username>তবে এটি যেভাবেই চলবে।
অভিনব

21
আমার অ্যামাজন ইসি 2 উদাহরণটিতে কাজ করে না। পরিবর্তে, (crontab -l ; echo "00 09 * * 1-5 echo hello") | crontab -কাজ করে।
স্টাফেন ব্রুকার্ট

11
এই সৌন্দর্য একটি প্রার্থী পছন্দ UUcatA
সিলিং

86

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

বলুন আপনার এগুলি রয়েছে:

croncmd="/home/me/myfunction myargs > /home/me/myfunction.log 2>&1"
cronjob="0 */15 * * * $croncmd"

এটিকে ক্রন্টবে যুক্ত করতে, কোনও সদৃশ ছাড়াই:

( crontab -l | grep -v -F "$croncmd" ; echo "$cronjob" ) | crontab -

এটি বর্তমানের সময়সূচী যাই হোক না কেন ক্রন্টব থেকে তা অপসারণ করতে:

( crontab -l | grep -v -F "$croncmd" ) | crontab -

মন্তব্য:

  • গ্রেপ-এফ স্ট্রিংকে আক্ষরিক সাথে মেলে, কারণ আমরা এটি একটি নিয়মিত প্রকাশ হিসাবে ব্যাখ্যা করতে চাই না
  • আমরা সময় নির্ধারিত সময়সূচী উপেক্ষা করে কেবল আদেশটি সন্ধান করি। এই পথে; ক্রন্টবটিতে নতুন লাইন যুক্ত করার ঝুঁকি ছাড়াই তফসিল পরিবর্তন করা যেতে পারে

@ ময়েসথ: আপনি কি বিস্তারিত বলতে পারবেন?
মুনক্যাকটাস

আপনার কম্পিউটারে এটি চেষ্টা করা উচিত
ময়েসথ

2
@ ময়েসথ: আমি স্পষ্টতই এটি আমার কম্পিউটারে চেষ্টা করেছি (লিনাক্স)। আমি এলোমেলো অ-কার্যক্ষম জিনিসগুলির পরামর্শ দেব না: /
মুনক্যাকটাস

2
যাইহোক, 27 জন ভুল হতে পারে না (আজকের হিসাবে)। সুতরাং দয়া করে বর্ণনা করুন কেন এটি আপনার সেটআপের জন্য কাজ করছে না, তাই আমরা সহায়তা করতে পারি।
মুনক্যাকটাস

2
এটি ওএসএক্স সমস্যা হতে পারে।
মোয়েসথ

40

আপনার সহায়তার জন্য সবাইকে ধন্যবাদ। আমি এখানে এবং অন্য কোথাও যা পেয়েছি তা এক সাথে পাইকিং করে আমি এটিকে সামনে নিয়ে এসেছি:

কোড

command="php $INSTALL/indefero/scripts/gitcron.php"
job="0 0 * * 0 $command"
cat <(fgrep -i -v "$command" <(crontab -l)) <(echo "$job") | crontab -

আমি নিজেকে পুনরাবৃত্তি না করে কীভাবে দুটি ভেরিয়েবলের প্রয়োজনীয়তা দূর করতে পারি তা বুঝতে পারি না।

commandস্পষ্টতই আমি যে কমান্ডটি নির্ধারণ করতে চাই তা হ'ল। jobলাগে$commandসময়সূচী ডেটা এবং যুক্ত করে। কোডের লাইনে আমার কাজ দুটি চলক পৃথক প্রয়োজন।

বিস্তারিত

  1. Duckyflip এর ক্রেডিট, আমি এই সামান্য পুনর্নির্দেশ ট্যাটিটি ( <(*command*)) এর crontab -lইনপুট আউটপুটটি ইনপুটতে পরিণত করতে ব্যবহার করিfgrep কমান্ডের ।
  2. fgrepতারপরে $command( -vবিকল্প) যেকোন ম্যাচ ফিল্টার করে , কেস-সংবেদনশীল (-i বিকল্প) এর ।
  3. আবার, পুনঃনির্দেশের জিনিসটি ( <(*command*)) ব্যবহারের জন্য ফলাফলটিকে ইনপুটতে ফিরে পরিবর্তন করতে ব্যবহৃত হয়cat কমান্ডের ।
  4. catকমান্ড এছাড়াও পায় echo "$job"(স্ব ব্যাখ্যামূলক), আবার, পুনর্নির্দেশ অপরিচিত এর ব্যবহার (মাধ্যমে<(*command*) )।
  5. সুতরাং থেকে ফিল্টার করা আউটপুট crontab -lএবং সরল echo "$job", মিলিত, পাইপ করা হয় ('|') শেষ crontab -পর্যন্ত লেখার জন্য।
  6. এবং তারা সব পরে সুখে বসবাস!

সংক্ষেপে:

এই লাইন কোডটি কমান্ডের সাথে মেলে এমন কোনও ক্রোন জবগুলি ফিল্টার করে, তারপরে নতুন একটি দিয়ে অবশিষ্ট ক্রোন জবগুলি লিখে দেয়, কার্যকরভাবে একটি "অ্যাড" বা "আপডেট" ফাংশনের মতো অভিনয় করে। এটি ব্যবহার করার জন্য, সব আপনাকে যা করতে হবে আউট মান swap 'র হয় commandএবং jobভেরিয়েবল।


5
অন্যদের পড়ার সুবিধার জন্য, এই পদ্ধতির সুবিধাটি হ'ল আপনি ক্রন্টব-এ নকল প্রবেশগুলি (অন্য সমস্ত সমাধানের বিপরীতে) এর অনুলিপি না করেই একাধিকবার চালনা করতে পারেন। এটি fgrep -v
হ'ল

5
আপনি যদি crontab -l | fgrep -i -v "$command" | { cat; echo "$job"; } | crontab -l
পাইপিংয়ের leftতিহ্যবাহী

1
@ এন্টোইনলিজে, আপনার উত্তর শেষ পর্যন্ত অতিরিক্ত "এল" রয়েছে, যা সেখানে থাকা উচিত নয়।
হেনরি

26

সম্পাদনা (স্থির ওভাররাইটিং):

cat <(crontab -l) <(echo "1 2 3 4 5 scripty.sh") | crontab -

এটি কোনও
ক্রন্টব

1
@ দ্য বনসাই ওহ, আমি এখনই এটি স্থির করেছি তাই এটি বিদ্যমান
ক্রন্টব

3
মনে রাখবেন, বাশের প্রক্রিয়া বিকল্পটি ত্রুটিগুলি গ্রাস করে। যদি crontab -lব্যর্থ হয়, তবে crontab -সফল হয় তবে আপনার ক্রোনটাবটি ওয়ান-লাইনার হবে।
শে

13

ক্রন্টব ব্যবহারের চারপাশে প্রচুর ভাল উত্তর এসেছে, তবে ব্যবহারের মতো সহজ পদ্ধতির কোনও উল্লেখ নেই cron

ব্যবহার cronসিস্টেম ফাইল এবং এ অবস্থিত ডিরেক্টরি সদ্ব্যবহার করবে /etc/crontab, /etc/cron.daily,weekly,hourlyবা /etc/cron.d/:

cat > /etc/cron.d/<job> << EOF
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root HOME=/  
01 * * * * <user> <command>
EOF

উপরের এই উদাহরণে, আমরা একটি ফাইল তৈরি করেছি /etc/cron.d/, কমান্ডটি সফলভাবে সম্পাদন করার জন্য পরিবেশের ভেরিয়েবল সরবরাহ করেছি userএবং কমান্ডটির জন্য এবংcommand নিজেই সরবরাহ করেছি। এই ফাইলটি কার্যকর করা উচিত নয় এবং নামটিতে কেবল আলফা-সংখ্যাসূচক এবং হাইফেন থাকতে হবে (নীচে আরও বিশদ)।

যদিও একটি সংক্ষিপ্ত উত্তর দিতে, আসুন crontabবনামের মধ্যে পার্থক্যগুলি দেখুন cron/crond:

crontab -- maintain tables for driving cron for individual users

যারা সিস্টেমে তাদের ব্যবহারকারীর প্রসঙ্গে চাকরীটি চালাতে চান তাদের crontabজন্য সঠিক ধারণা তৈরি করতে পারে।

cron -- daemon to execute scheduled commands

যারা কনফিগারেশন পরিচালনা ব্যবহার করেন বা অন্য ব্যবহারকারীর জন্য কাজ পরিচালনা করতে চান তাদের ক্ষেত্রে আমাদের ব্যবহার করা উচিত cron

মানচিত্রগুলি থেকে একটি দ্রুত উদ্ধৃতি আপনাকে করণীয় এবং কী করবেন না তার কয়েকটি উদাহরণ দেয়:

/ etc / crontab এবং /etc/cron.d এ থাকা ফাইলগুলি অবশ্যই মূলের মালিকানাধীন হওয়া আবশ্যক এবং এগুলি গ্রুপ- বা অন্যান্য লিখনযোগ্য হবে না। স্পুল ক্ষেত্রের বিপরীতে, /etc/cron.d এর অধীনে থাকা ফাইলগুলি বা /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly এবং /etc/cron.monthly ফাইলগুলিও হতে পারে symlinks, প্রদত্ত যে উভয় sylink এবং ফাইল এটি নির্দেশ করে যা মূলের মালিকানাধীন। /Etc/cron.d এর অধীন ফাইলগুলি সম্পাদনযোগ্য হওয়ার দরকার নেই, যখন /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly এবং /etc/cron.monthly ফাইলগুলি যেমন করে এগুলি রান-পার্টস দ্বারা চালিত হয় (আরও তথ্যের জন্য রান-পার্টস দেখুন (8))।

সূত্র: http://manpages.ubuntu.com/manpages/trusty/man8/cron.8.html

সিস্টেমের দৃষ্টিকোণ থেকে ক্রোনকে এই পদ্ধতিতে পরিচালনা করা সহজ এবং আরও মাপের বিষয়, তবে সর্বদা সেরা সমাধান হতে পারে না।


1
এটি উল্লেখযোগ্য হতে পারে যে <job>কোনও ফাইল এক্সটেনশন অন্তর্ভুক্ত করা উচিত নয়।
jww

7

সম্ভাবনা হ'ল আপনি এটিকে স্বয়ংক্রিয় করছেন এবং আপনি একটি কাজও দুটিবার যুক্ত করতে চান না। সেক্ষেত্রে ব্যবহার করুন:

__cron="1 2 3 4 5 /root/bin/backup.sh"
cat <(crontab -l) |grep -v "${__cron}" <(echo "${__cron}")

আপনি কেবল বেস ব্যবহার করছেন তবে এটি কেবল কাজ করে। আমি সঠিক ড্যাশ সম্পর্কে সচেতন নই (sh ) সিনট্যাক্স ।

আপডেট: ব্যবহারকারীর কাছে এখনও ক্রন্টব না থাকলে এটি কাজ করে না। আরও নির্ভরযোগ্য উপায় হ'ল:

(crontab -l ; echo "1 2 3 4 5 /root/bin/backup.sh") | sort - | uniq - | crontab - 

বিকল্পভাবে, যদি আপনার ডিস্ট্রো এটি সমর্থন করে তবে আপনি একটি পৃথক ফাইলও ব্যবহার করতে পারেন:

echo "1 2 3 4 5 /root/bin/backup.sh" |sudo tee /etc/crond.d/backup

অন্য এসও প্রশ্নে সেগুলি খুঁজে পেয়েছে ।


ব্যাশের পরিবর্তে শ ব্যবহার করছেন?
কেভিজেড

তবুও shsh: 1: Syntax error: "(" unexpected ব্যবহার করা হচ্ছে ।
বাটান্দোয়া

আপনি কেবল বেস ব্যবহার করছেন তবে এটি কেবল কাজ করে। আমি সঠিক DASH (sh) সিনট্যাক্স সম্পর্কে সচেতন নই।
উত্তরটিও

1
fwiw, আমি এই ত্রুটি ব্যাশ ব্যবহার মধ্যে ব্যবধান আছে হলে পেতে <এবং (। এর অর্থ < (ব্যর্থ তবে <(কাজ করে, যদি না আপনার সময়সূচীটিতে তারকাচিহ্ন থাকে ...
ডাবলশার্প

আমি বিশ্বাস করি এটি সঠিক উপায়:cat <(crontab -l |grep -v "${CRON}") <(echo "${CRON}") | crontab -
স্ট্যানিস্লাভ

5

BASH স্ক্রিপ্টের সাহায্যে একটি দুর্দান্ত দ্রুত এবং নোংরা সৃষ্টি / ক্রন্টব প্রতিস্থাপনের জন্য, আমি এই স্বরলিপিটি ব্যবহার করেছি:

crontab <<EOF
00 09 * * 1-5 echo hello
EOF

5

একটি বৈকল্পিক যা পছন্দসই স্ট্রিংটি সেখানে পাওয়া না গেলে কেবল ক্রন্টাব সম্পাদনা করে:

CMD="/sbin/modprobe fcpci"
JOB="@reboot $CMD"
TMPC="mycron"
grep "$CMD" -q <(crontab -l) || (crontab -l>"$TMPC"; echo "$JOB">>"$TMPC"; crontab "$TMPC")

3

আপনি যদি ভিক্সি ক্রোন ব্যবহার করেন, যেমন বেশিরভাগ লিনাক্স বিতরণে, আপনি পৃথক ক্রোনজব দিয়ে কেবল একটি ফাইল /etc/cron.d এ রাখতে পারেন।

এটি কেবল অবশ্যই মূলের জন্য কাজ করে। যদি আপনার সিস্টেম এটি সমর্থন করে তবে আপনাকে সেখানে কয়েকটি উদাহরণ দেখতে হবে। (পুরানো / ইত্যাদি / ক্রন্টবের মতো একই বাক্য গঠনে লাইনে অন্তর্ভুক্ত থাকা ব্যবহারকারীর নামটি নোট করুন)

ক্রোনটিতে এটি একটি দু: খজনক ভুল ধারণা যে এটি নিয়মিত ব্যবহারকারী হিসাবে হ্যান্ডেল করার কোনও উপায় নেই এবং অনেক ক্রোন বাস্তবায়নের এটিকে হ্যান্ডেল করার কোনও উপায় নেই।


2

সুতরাং, ডেবিয়ান, উবুন্টু এবং আরও অনেক অনুরূপ ডেবিয়ান ভিত্তিক ডিস্ট্রো ...

একটি ক্রোন টাস্ক কনটেনটেশন মেকানিজম রয়েছে যা একটি কনফিগার ফাইল নিয়ে যায়, সেগুলি বান্ডিল করে এবং আপনার ক্রোন পরিষেবা চলতে যোগ করে।

আপনি /etc/cron.d/somefilename এর অধীনে একটি ফাইল রাখতে পারেন যেখানে আপনি চাইলে কিছু ফাইলফিলাম হয়।

sudo echo "0,15,30,45 * * * * ntpdate -u time.nist.gov" >> /etc/cron.d/vmclocksync

আসুন এটি বিচ্ছিন্ন করুন:

sudo - কারণ / ইত্যাদি ডিরেক্টরিতে ক্রোন কনফিগারেশন পরিবর্তন করতে আপনার উন্নত সুবিধাগুলি প্রয়োজন

প্রতিধ্বনি - স্ট্যান্ড আউট আউটপুট তৈরি করার জন্য একটি বাহন। প্রিন্টফ, বিড়াল ... পাশাপাশি কাজ করবে

"- আপনার স্ট্রিংয়ের শুরুতে একটি ডাবলকোট ব্যবহার করুন, আপনি পেশাদার

0,15,30,45 * * * * - স্ট্যান্ডার্ড ক্রোন রান সূচি, এটি প্রতি 15 মিনিটে চলে

ntpdate -u time.nist.gov - আসল কমান্ডটি আমি চালাতে চাই

"- কারণ আমার প্রথম ডাবল উদ্ধৃতিগুলিকে আউটপুট হিসাবে লাইনটি বন্ধ করতে একটি বন্ধু দরকার

>> - ওভাররাইটের পরিবর্তে ডাবল পুনঃনির্দেশ সংযোজন *

/etc/cron.d/vmclocksync - vmclocksync আমার দ্বারা নির্বাচিত ফাইলের নাম, এটি /etc/cron.d/ এ যায়


* আমরা যদি> পুনঃনির্দেশ ব্যবহার করি তবে আমরা গ্যারান্টি দিতে পারি যে আমাদের কেবল একটি টাস্ক এন্ট্রি ছিল। তবে, আমরা বিদ্যমান ফাইলে অন্য কোনও নিয়ম উড়িয়ে দেওয়ার ঝুঁকিতে পড়ব। > এর সাথে সম্ভাব্য ধ্বংসটি যদি সঠিক হয় তবে >> এর সাথে সম্ভাব্য নকলগুলি আপনার পক্ষে থাকলে আপনি নিজেই সিদ্ধান্ত নিতে পারেন। বিকল্পভাবে, আপনি ফাইলের নাম উপস্থিত রয়েছে কিনা তা যাচাই করার জন্য, আপনি কোনও সংশ্লেষিত বা জড়িত কিছু করতে পেরেছিলেন এবং এতে কোনও নকল যোগ করছেন কিনা - তবে, আমার কিছু করার আছে এবং আমি এটি করতে পারি না আপনি এখনই।


2

ইন্টারেক্টিভ সম্পাদক ছাড়া ক্রোন জব যুক্ত করার জন্য স্ক্রিপ্টে বাশ করুন। নীচে কোড লিনাক্স ফাইল ব্যবহার করে ক্রোনজব যুক্ত করতে সহায়তা করে।

#!/bin/bash

cron_path=/var/spool/cron/crontabs/root

#cron job to run every 10 min.
echo "*/10 * * * * command to be executed" >> $cron_path

#cron job to run every 1 hour.
echo "0 */1 * * * command to be executed" >> $cron_path

1
আমি জানি এটি একটি দীর্ঘ সময় হয়েছে, তবে এটি এখনও একমাত্র উত্তম উত্তর, যেহেতু সর্বাধিক ভোটপ্রাপ্তরা কেবল নতুনটিকে যুক্ত করার পরিবর্তে পুরানো ক্রোনগুলি সরিয়ে দেয়।
এফেই

1
এটি একটি ক্রোন ইনস্টল করে না। এটি কেবল একটি ফাইলের সাথে এটি যুক্ত করে। নতুন এন্ট্রি ইনস্টল করতে আপনাকে কোনওভাবে ক্রোন প্রক্রিয়াটি অবহিত করতে হবে।
অপুরভ পারিজাত

1

crontabসদৃশ ছাড়াই কমান্ড যুক্ত করার জন্য এখানে একটি বাশ ফাংশন

function addtocrontab () {
  local frequency=$1
  local command=$2
  local job="$frequency $command"
  cat <(fgrep -i -v "$command" <(crontab -l)) <(echo "$job") | crontab -
}
addtocrontab "0 0 1 * *" "echo hello"

1
CRON="1 2 3 4 5 /root/bin/backup.sh" 
cat < (crontab -l) |grep -v "${CRON}" < (echo "${CRON}")

গ্রেপ সঠিক কমান্ডে -w পরামিতি যুক্ত করুন, -w পরামিতি ছাড়াই ক্রোনজব "টেস্টিং" ক্রোন জব মুছে ফেলার কারণ "টেস্টিং 123"

ক্রোনজবস যুক্ত / সরানোর জন্য স্ক্রিপ্ট ফাংশন। কোনও সদৃশ এন্ট্রি নেই:

cronjob_editor () {         
# usage: cronjob_editor '<interval>' '<command>' <add|remove>

if [[ -z "$1" ]] ;then printf " no interval specified\n" ;fi
if [[ -z "$2" ]] ;then printf " no command specified\n" ;fi
if [[ -z "$3" ]] ;then printf " no action specified\n" ;fi

if [[ "$3" == add ]] ;then
    # add cronjob, no duplication:
    ( crontab -l | grep -v -F -w "$2" ; echo "$1 $2" ) | crontab -
elif [[ "$3" == remove ]] ;then
    # remove cronjob:
    ( crontab -l | grep -v -F -w "$2" ) | crontab -
fi 
} 
cronjob_editor "$1" "$2" "$3"

পরীক্ষিত:

$ ./cronjob_editor.sh '*/10 * * * *' 'echo "this is a test" > export_file' add
$ crontab  -l
$ */10 * * * * echo "this is a test" > export_file

ক্রোনট্যাবে আপনার যদি একই কমান্ড দু'বার হয় (বিভিন্ন সময়ে চলমান থাকে) অপসারণ উভয় লাইন মুছে ফেলবে।
মাইকেলকেয়ে

1

এটির জন্য আমার পছন্দসই সমাধানটি হ'ল:

(crontab -l | grep . ; echo -e "0 4 * * * myscript\n") | crontab -

এটি নিশ্চিত করবে যে আপনি নীচের দিকে ফাঁকা নতুন লাইনটি সঠিকভাবে পরিচালনা করছেন। ক্রন্টাবের সমস্যাগুলি এড়াতে আপনার সাধারণত খালি নতুন লাইনের সাহায্যে ক্রন্টব ফাইলটি শেষ করা উচিত। এবং উপরের স্ক্রিপ্টটি নিশ্চিত করে যে এটি প্রথমে "গ্রেপ" দিয়ে কোনও ফাঁকা রেখা সরিয়ে ফেলে। অংশ, এবং তারপরে স্ক্রিপ্টের শেষে "\ n" দিয়ে একটি নতুন ফাঁকা লাইনে যুক্ত করুন। এটি যদি আপনার বিদ্যমান ক্রন্টব ফাইলটি ফাঁকা রেখার সাথে শেষ হয় তবে এটি আপনার নতুন কমান্ডের উপরে একটি ফাঁকা রেখা পাওয়া রোধ করবে।



0

না, ক্রোন ফাইলগুলিতে সংশোধন করার জন্য ক্রন্টবায় কোনও বিকল্প নেই।

আপনাকে করতে হবে: বর্তমান ক্রোন ফাইলটি (ক্রন্টব-ল> নতুন ফাইল) নিতে হবে, এটি পরিবর্তন করে নতুন ফাইলটি স্থাপন করতে হবে (ক্রন্টব নিউফিলি)।

আপনি যদি পার্লের সাথে পরিচিত হন তবে আপনি এই মডিউলটি কনফিগার করুন :: ক্রন্টব ব্যবহার করতে পারেন ।

এলএলপি, আন্দ্রে


0

ক্রোনজবস যুক্ত করতে স্ক্রিপ্ট ফাংশন। সদৃশ এন্ট্রি, ব্যবহারযোগ্য এক্সপ্রেশন *> "পরীক্ষা করুন

cronjob_creator () {         
# usage: cronjob_creator '<interval>' '<command>'

  if [[ -z $1 ]] ;then
    printf " no interval specified\n"
elif [[ -z $2 ]] ;then
    printf " no command specified\n"
else
    CRONIN="/tmp/cti_tmp"
    crontab -l | grep -vw "$1 $2" > "$CRONIN"
    echo "$1 $2" >> $CRONIN
    crontab "$CRONIN"
    rm $CRONIN
fi
}

পরীক্ষিত:

$ ./cronjob_creator.sh '*/10 * * * *' 'echo "this is a test" > export_file'
$ crontab  -l
$ */10 * * * * echo "this is a test" > export_file

উত্স: আমার মস্তিষ্ক;)


-5

আপনি সম্ভবত এডিট করতে ডিফল্ট সম্পাদকটি পরিবর্তন করতে পারেন এবং সম্পাদনার জন্য একটি হেরডোক ব্যবহার করতে পারেন।

EDITOR=ed
export EDITOR

crontab -e << EOF
> a
> * * * * * Myscript
> * * * * * AnotherScript
> * * * * * MoreScript
> .
> w
> q
> EOF

অগ্রণী নোট করুন > কোডটির অর্থ হল একটি নতুন লাইন তৈরি করতে রিটার্ন / এন্টার কী টিপানো হয়েছে।

একটি উপায়ে যাতে সংযোজন করুন সেটি মুছে কিছু করবে না।

মানে আপনি সম্পাদনা শেষ করেছেন।

W উপায়ে পরিবর্তন লেখ।

কুই মানে প্রস্থান করে অথবা প্রস্থান ইডি।

আপনি এটা চেক আউট করতে পারেন

crontab -l

আপনি একটি এন্ট্রিও মুছতে পারেন।

EDITOR=ed
export EDITOR

crontab -e << EOF
> /Myscript/
> d
> .
> w
> q
> EOF

এটি এতে মাইক্রিপ্টের সাহায্যে ক্রন্টব এন্ট্রি মুছে ফেলবে।

মানে ভিতরে প্যাটার্ন মুছতে / /

আবার এটি পরীক্ষা করে দেখুন

crontab -l

এই সমাধান একটি স্ক্রিপ্ট ভিতরে খুব কম কাজ করে > কোর্স :-)

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