স্ক্রিপ্ট থেকে ক্রোনটিতে লাইন যুক্ত করুন


40

স্ক্রিপ্টের মাধ্যমে কোনও ব্যবহারকারীর ক্রোনটিতে লাইন যুক্ত করার কোনও উপায় আছে কি?

আমি সাধারণত এটি ব্যবহার করে crontab -eকরি তবে শেল স্ক্রিপ্টের সাহায্যে আমি এই কাজটি স্বয়ংক্রিয় করতে চাই।


উত্তর:


49

আপনি বর্তমান ব্যবহারকারীদের নীচে লাইকটি প্রতিধ্বনিত করতে পারেন ক্রন্টব:

#!/bin/bash

line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -

আপনি আমাকে এটি মারলেন +1 কিউজ (পরীক্ষার সময় আমার স্ক্রিপ্ট ত্রুটি ছিল: ডি)। আপনার যুক্ত করা উচিত এমন 1 টি জিনিস আমার মনে হয়: সিস্টেমটি অবহিত করা উচিত যা cronপরিবর্তন করা হয়েছিল।
রিঞ্জউইন্ড

আমি জানতাম এই উত্তর দেওয়ার রেস হবে! আপনি ঠিক যে ক্রোন অবহিত করা প্রয়োজন। এ কারণেই আপনি ক্রন্টবের শেষের কমান্ডটি প্রতিধ্বনিত করতে পারবেন না। আমি পরীক্ষা করেছি যে উপরের স্ক্রিপ্টটি কাজ করে এবং ক্রোন কমান্ডটি চালানো শুরু করে।
রিচার্ড হলোয়ে

13
ওহ এবং আমি মনে করি crontabযে যদি এটির ব্যবহারকারীর এখনও উপস্থিত না থাকে (?)
রিনজউইন্ড

7
এটি আপনাকে হুঁশিয়ারি দেয় যে ব্যবহারকারীদের ক্রন্টাবের অস্তিত্ব নেই, যদি এটি হয় তবে এটি এটি তৈরি করবে। আমি আপনার মন্তব্য অন্তর্দৃষ্টিপূর্ণ হিসাবে upvoting করছি।
রিচার্ড হলোয়ে

3

আপনি যদি আপনার ক্রন্টবায় কোনও মান সম্পাদনা করতে চান তবে আপনি এর লাইন ধরে কিছু করতে পারেন:

$ crontab -l | sed -e 's/foo/bar/' | crontab -

স্পষ্টতই আপনার প্রতিস্থাপনের সাথে আপনার যত্নবান হওয়া দরকার এটি নিশ্চিত হওয়ার জন্য যে এটি কেবল যে লাইনের (গুলি) আপনি পরিবর্তন করতে চান তার সাথে মেলে; অন্যথায় সমস্ত foosপরিবর্তিত হয় bars(এই উদাহরণে)।

এই পদ্ধতির সুবিধা হ'ল আপনি পুরো ক্রন্টব প্রতিস্থাপন করছেন না। (স্লেজহ্যামার না হয়ে একটি রূপক টুইটার)

আপনি সেডের পরিবর্তে যে কোনও এডিটিং কমান্ড ব্যবহার করতে পারেন । উদাহরণস্বরূপ, আপনি যদি কোনও লাইনের স্পর্শ করতে এড ব্যবহার করতে চান যা এই জাতীয় চেহারাটি শুরু করে:

2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1

বলুন যে এই লাইনটি অনেকগুলি লাইনের মধ্যে রয়েছে বা বিভিন্ন সিস্টেমে আপডেট করার জন্য আপনার কাছে অনেকগুলি পৃথক ক্রন্টব্যাব রয়েছে এবং আপনি কেবলমাত্র জানেন যে আপনার লাইনটি এই শব্দটির সাথে একমাত্র রেখা হতে চলেছে flitch

এটি দেখতে দেখতে সম্ভবত:

$ cat /tmp/edscript
/flitch
s/3/9/
w
q
$ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out
$ crontab -l
...
2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1
...

এখন আমি সময় প্রায় 100% মানা আবশ্যক sed কি করবে ed কি করতে হবে, কিন্তু এটা সবসময় সুইস আর্মি নাইফ একটি অতিরিক্ত সরঞ্জাম আছে ভাল। ^। ^

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