আমি কীভাবে আমার ক্রন্টব এন্ট্রি যুক্ত করব?


13

আমি প্রথমবারের মতো ক্রন্টব ব্যবহার করছি। কয়েকটি খুব সাধারণ পরীক্ষা ক্রোন টাস্ক লিখতে চান এবং সেগুলি চালান।

$crontab * * * * * echo "Hi"

কিছুই উত্পাদন করে না।

crontab */1 * * * * echo "hi"

বলে */1: No such file or directory

এছাড়াও, আমি বর্তমানে চলমান ক্রোন কার্যগুলি কীভাবে তালিকাভুক্ত করব (কেবলমাত্র আমার নিজেরাই নয়, অন্য ব্যবহারকারীরা যেমন মূল হিসাবে শুরু করেছেন) ones

এবং আমি কীভাবে কোনও নির্দিষ্ট ক্রোন কার্য মুছব?


ক্রোন
জবগুলি

উত্তর:


21

আপনি এর crontabমতো ব্যবহার করতে পারবেন না । man crontabএই ইউটিলিটি কল করার সঠিক উপায় সম্পর্কে পড়তে ব্যবহার করুন ।

আপনি crontab -eবর্তমান ব্যবহারকারীর ক্রোন এন্ট্রিগুলি সম্পাদনা করতে ব্যবহার করতে চাইবেন (আপনি লাইনগুলি যুক্ত / সংশোধন / অপসারণ করতে পারেন)। crontab -lকনফিগার করা কাজের বর্তমান তালিকা দেখতে ব্যবহার করুন ।

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

দ্রষ্টব্য: আপনি যখন কমান্ড লাইনে ( *এবং ?বিশেষত) শেল গ্লোব্বিং অক্ষর ব্যবহার করেন তখন খুব সাবধান হন । *বর্তমান ডিরেক্টরি ফাইলগুলির তালিকায় প্রসারিত হবে, যা অপ্রত্যাশিত প্রভাব ফেলতে পারে। আপনি যদি *কোনও কিছুর পক্ষে যুক্তি হিসাবে পাস করতে চান তবে এটিকে উদ্ধৃত করুন ( '*')।


সুতরাং আমি ক্রন্টব-ই করি এবং সম্পাদক হিসাবে আমি এন্ট্রি * / 1 * * * * ইকো "হাই" রাখি এবং আমি যখন এই ফাইলটি সংরক্ষণ করি তখন আমি বার্তাটি দেখি যে ক্রন্টব: নতুন ক্রন্টব ইনস্টল করা হচ্ছে। তবে আমি হাই ম্যাসেজগুলি স্ক্রিনে উপস্থিত দেখছি না। আমি এখন কী মিস করছি? ধন্যবাদ।
xyz

2
ক্রন্টবের আউটপুট কখনই আপনার "স্ক্রিনে" যাবে না। ক্রোনটাবের জন্য পসিএক্স ম্যান পৃষ্ঠা থেকে: "যদি ক্রোনটব এন্ট্রি থেকে সম্পাদিত আদেশ দ্বারা স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি পুনর্নির্দেশ না করা হয়, তবে কোনও উত্পাদিত আউটপুট বা ত্রুটি একটি প্রয়োগ-নির্ভর পদ্ধতির মাধ্যমে ব্যবহারকারীকে মেল করা হবে।"
মাদুর

1
কাজের আউটপুট জব মালিকের স্থানীয় মেল বাক্সে প্রেরণ করা হবে। (দৌড়ানো mailকম্যান্ড লাইন থেকে আপনার স্থানীয় মেইল বক্স অ্যাক্সেস করা উচিত, যদি কনফিগার করা।) দেখার জন্য গ্রাফিক পরিবেশে 'হাই', আপনি যেমন টাস্ক সেট করতে পারে: * * * * * export DISPLAY=:0; xmessage 'hi'
manatwork

@ মান্যাট ওয়ার্ক আপনারও XAUTHORITY দরকার হতে পারে যা সহজ নাও হতে পারে
ডারোবার্ট

7

কারও সম্পাদনা করার দুটি উপায় রয়েছে crontab:

  1. ইন্টারেক্টিভভাবে, ব্যবহার করে crontab -e, যা crontabদ্বারা নির্দিষ্ট করা সম্পাদকটি খুলবে $VISUALবা $EDITOR, বা

  2. অ ইন্টারেক্টিভ ব্যবহার crontab crontab.txt, যা কেবল আমদানি করবে crontabফাইল থেকে এন্ট্রি crontab.txt, প্রতিস্থাপন বর্তমান ব্যবহারকারীর জন্য বিদ্যমান সক্রিয় নিম্নলিখিতরূপে crontab পরিবর্তন।

আপনার কাছে সমস্যাটি হ'ল আপনি কেবল crontabকমান্ডটি ভুল ব্যবহার করছেন ।


নিম্নলিখিতটি অ-ইন্টারেক্টিভ ক্রন্টব ম্যানিপুলেশন নিয়ে উদ্বেগ প্রকাশ করেছে:

সুতরাং, প্রোগ্রামিয়ালি নির্দিষ্ট কাজগুলি সরিয়ে ফেলতে আপনি এর মতো কিছু করতে পারেন

$ crontab -l | grep -v 'PATTERN' >crontab.txt && crontab crontab.txt

PATTERNআপনি যে মুছে ফেলতে চান সেই টাস্ক (গুলি) এর সাথে মেলে এমন একটি নিয়মিত অভিব্যক্তি কোথায় । এখানে, crontab -lআপনি আপনার বর্তমান দিতে হবে crontab

অথবা, যদি crontab-fragment.txtসক্রিয় ক্রন্টব্যাটব থেকে সরিয়ে নিতে চান এমন একটি ফাইলের আপনার প্রবেশিকা থাকে,

$ crontab -l | grep -v -Fx -f crontab-fragment.txt >crontab.txt && crontab crontab.txt

এটি বর্তমান ক্রন্টবটি পড়ে এবং বর্তমান crontab-fragment.txtডিরেক্টরিতে (একটি সম্পূর্ণ রেখার স্ট্রিং তুলনা ব্যবহার করে) ফাইলের মধ্যে উপস্থিত যে কোনও লাইন ফিল্টার করে (মুছে ফেলে )। ফলাফলটি সংরক্ষণ করা হয় crontab.txtএবং তারপরে বর্তমান ক্রন্টব প্রতিস্থাপনের জন্য সেখান থেকে লোড করা হয়।

করতে এক বা একাধিক কার্য যুক্ত করুন , ভালো কিছু করতে

$ crontab -l | cat - crontab-fragment.txt >crontab.txt && crontab crontab.txt

এটি ধরে নেওয়া হচ্ছে যে ফাইলটিতে crontab-fragment.txtআপনি যোগ করতে চান এমন এন্ট্রি রয়েছে। এটি বর্তমান ক্রোনটব পড়ে, এগুলি থেকে এন্ট্রি সংযোজন করে crontab-fragment.txtএবং তৈরি করে crontab.txtcrontab.txtফাইল তারপর বর্তমান নিম্নলিখিতরূপে crontab পরিবর্তন প্রতিস্থাপন করে।


2

যদি আপনি ক্রন্টবকে ইন্টারেক্টিভ পরিবর্তন করতে চান তবে কমান্ডটি চালান crontab -e, অন্য কোনও বিকল্প নেই। এটি ক্রন্টাবের অনুলিপিতে একটি সম্পাদক শুরু করবে; আপনি যখন সম্পাদক থেকে প্রস্থান করবেন , সম্পাদিত অনুলিপিটি নতুন ক্রন্টবে পরিণত হবে। আপনি যা সম্পাদক মাধ্যমে শুরু হয় নিয়ন্ত্রণ করতে পারেন VISUALএবং EDITORবিভিন্ন পরিবেশের । আপনার ক্রন্টব তালিকা করতে, চালান crontab -l

আপনি যদি কোনও স্ক্রিপ্টে ক্রোনটাব সংশোধন করতে চান তবে সেট করুন VISUALএবং EDITORকোনও স্ক্রিপ্টের পথে বা শেল স্নিপেটে যা সরবরাহ করা ফাইলটি পরিবর্তিত করে । সম্পাদক edএখানে সম্ভাবনা, বা sed -iআপনার বাস্তবায়নের sedএই বিকল্প আছে। আপনি যদি নিঃশর্তভাবে একটি লাইন যুক্ত করতে চান তবে আপনি এটি ব্যবহার করতে পারেন echo … >>। উদ্ধৃতি দিয়ে যত্ন নিন; সন্দেহের মধ্যে এ সব যদি, একটি স্ক্রিপ্ট লিখে যেমন স্ক্রিপ্টের নাম পাস EDITOR

script=$(mktemp)
cat <<'EOF' >"$script"
#!/bin/sh
ed -s "$1" <<'EOS'
g/^ *[^= ][^ =]*  *[^= ][^ =]*  *[^= ][^ =]*  *[^= ][^ =]*  *[^= ][^ =]*  *echo "hi"$/d
$a
* * * * * echo "hi"
.
w
q
EOS
EOF

2

এটি কিছুটা দেরিতে হলেও অন্যদের জন্য এখানে খুঁজছেন। VISUALএবং সাথে ইনপুট / আউটপুট স্ট্রিমগুলি পরিচালনা করার চেয়ে সহজ উপায় রয়েছে EDITOR

আপনি কেবল কোনও ফাইলটিতে আপনার ক্রোন শিডিয়ুল লিখতে পারেন, প্রতি লাইন প্রতি 1 টি কাজ, এবং কমান্ডটি ব্যবহার crontab [filename]করতে পারেন যাতে আপনি আপনার স্ক্রিপ্টের অংশ হিসাবে catআপনার কাজগুলি করতে পারেন filenameএবং শেষে আপনি যদি চান পছন্দমতো ক্রন্টব্যাটকে কল করুন।

আসলে man crontabএটি প্রথমে তালিকাভুক্ত করার মাধ্যমে ইঙ্গিত হিসাবে এটি সবচেয়ে সাধারণ ব্যবহার


2

আপনি যদি crontabঅটোমেশন দ্বারা বা কমান্ড লাইন থেকে এন্ট্রি যুক্ত করতে চান তবে আপনি করতে পারেন (আপনার ইচ্ছা মত সময়গুলি সেট করে)

echo "* * * * * /yourpath/yourcommand 2>&1 >> /var/log/somelog.log" >> /var/spool/cron/root (or appropriate username)

তারপর:

service crond reload

crontabs পুনরায় লোড করতে।


এটি অপ্রয়োজনীয়; সমস্ত ইউনিক্স ক্রন্টব ফাইলগুলি এর অধীনে সঞ্চয় করে না /var/spool/croncrontab(1)কমান্ডের মাধ্যমে আরও ভাল উপায় হবে ।
ট্রিগার করুন

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

1

এই আদেশ দিয়ে এটি ব্যবহার করে দেখুন:

crontab -e 

তারপরে আপনার ক্রোন জব যুক্ত করুন:

*/1 * * * * echo "hi"

যে ফাইলটিতে।


0

আমি নীচে বর্ণনা করার পদ্ধতিটি হাইলাইট করতে চাই যদিও এর আগে অন্য কোনও মন্তব্যে এটি উল্লেখ করা হয়েছে। কোনও ফাইলটিতে এন্ট্রি যুক্ত করার পরে ক্রোনটবে ফাইলটি যুক্ত করার সময় আমি এটি অত্যন্ত কার্যকর বলে মনে করেছি। এই ফাইলটিতে নীচে দুটি এন্ট্রি থাকবে এবং ফাইলটির নাম হবে hello-world-crontab.txt

  • 0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
  • 0 09 * * * python /home/user/greeting.py

তারপরে, ক্রন্টব-এ এন্ট্রি যুক্ত করতে আমি নীচের কমান্ডটি কার্যকর করেছি।

  • $ crontab hello-world-crontab.txt

পরবর্তী পদক্ষেপটি যাচাই করা এই এন্ট্রি যুক্ত করা হয়েছে।

  • $ crontab -l

প্রতিটি এন্ট্রি কী করে তার একটি সংক্ষিপ্ত বিবরণ:

  • এই ক্রন্টব এন্ট্রি লিখেছেন "হ্যালো ওয়ার্ল্ড!" /home/user/greeting.txtপ্রতিদিন সকাল 9 টায় ফাইলে প্রবেশ করুন ।
    • 0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
  • এই ক্রন্টব একটি অজগর ফাইলটি চালায় যা 'হ্যালো ওয়ার্ল্ড!' কমান্ড লাইনে প্রিন্ট করে! প্রতিদিন সকাল ৯ টায়
    • 0 09 * * * python /home/user/greeting.py
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.