Crontab মুছে ফেলা?


10

"Crontab -e" টাইপ করার পরিবর্তে আমি ভুলভাবে "crontab" টাইপ করেছি এবং একটি প্রক্রিয়া মাঝখানে আটকে ছিল তাই আমি প্রক্রিয়াটি বাতিল করে দিয়েছিলাম। এখন যখন আমি crontab যান - এটা সম্পূর্ণরূপে ফাঁকা। এই সব ভাল না। যদি আমি এটি ফেরত না পাই তবে এটি পুনরায় লিখতে হবে।

কোন উপায় আছে:

  1. ফিরে আমার crontab কাজ পেতে? তারা কোথাও মেমরি আছে? লিনাক্সে অবস্থিত অ্যাকাউন্ট নির্দিষ্ট ক্রোন্ট্যাব ফাইল কোথায়? অথবা
  2. ক্রনটি সম্পন্ন সব কিছু একটি লগ পান, তাই আমি আমার crontab ফাইল প্রকৌশলী বিপরীত করতে পারেন। আমি এটাকে দীর্ঘদিন ধরে দেখিনি?

2
শুধু আপনার সাম্প্রতিক সিস্টেম ব্যাকআপ থেকে এটি পুনরুদ্ধার।
David Heffernan

যদি আপনি crontab -r টি টাইপ করেন এবং এই থ্রেডটি খুঁজে পান তবে আপনি / var / log থেকে লগগুলি পড়ার কমান্ডটি পুনরুদ্ধার করতে পারেন। আমার ক্ষেত্রে syslog.1 আমি প্রয়োজন যে সবকিছু ছিল
StackUnder

উত্তর:


12

crontab কোন আর্গুমেন্ট স্ট্যান্ডার্ড ইনপুট থেকে একটি crontab ফাইল পড়া সঙ্গে। উদাহরণস্বরূপ, আপনি ব্যবহার করতে পারেন:

 echo "* * * * *  run-this-every-minute" | crontab

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

আমার সিস্টেমে (উবুন্টু 11.04), ব্যক্তিগত crontabs সংরক্ষণ করা হয় /var/spool/cron/crontabs/<USER> - কিন্তু যে আপনি clobbered কি, যাতে আপনি কোন ভাল না। (পথ আপনার সিস্টেমে ভিন্ন হতে পারে।)

আমি এন্ট্রি দেখতে /var/log/syslog কমান্ড দ্বারা নির্বাহ জন্য cron; আপনি যে থেকে আপনার crontab পুনর্গঠন করতে সক্ষম হতে পারে (অথবা আপনার সিস্টেম সমতুল্য, যদি থাকে), কিন্তু এটি ক্লান্তিকর হতে যাচ্ছে।

এই ধরনের সমস্যা এড়াতে আমি এখানে যা করি:

আমি আমার ক্রন্টববকে একটি পৃথক ফাইলের মধ্যে রাখি, এটি একটি উৎস নিয়ন্ত্রণ ব্যবস্থায় রক্ষিত। আমি এটা ইনস্টল কেবল চলমান দ্বারা

crontab filename

আমি কখনো ব্যবহার করি না crontab -e। যদি আমি ঘটনাক্রমে আমার crontab clobber, আমি শুধু ফাইল থেকে এটি পুনরায় লোড করতে পারেন। (ওয়েল, খুব কমই আমি কখনও কখনও ব্যবহার crontab -e অস্থায়ী পরিবর্তন করতে, জেনে রাখা যে আমি পরে বর্তমান সংস্করণটি পুনরুদ্ধার করতে পারি।)


@ মাউন্টেনক্লিমবার: আমি একমত নই। আপনার crontab সংরক্ষণ, ব্যবহার করুন crontab -l > filename। এটি পুনরুদ্ধার করতে, crontab filename। সিস্টেম দ্বারা সরবরাহিত ইন্টারফেস ব্যবহার করুন; তার পিছনে পিছনে যান না এবং সিস্টেম ফাইল ম্যানিপুলেট। এক্ষেত্রে, ফাইলটি আপডেট করার পদ্ধতিটি সিস্টেমটিকে পুনঃread করতে অবহিত করবে না; দ্য crontab কমান্ড হবে। অন্যের জন্য, ফাইল এবং আউটপুট এর মধ্যে পার্থক্য থাকতে পারে crontab -l; উবুন্টুতে ফাইলটিতে কিছু অতিরিক্ত মন্তব্য লাইন রয়েছে যা আপনাকে এটি সম্পাদনা না করার পরামর্শ দেয়।
Keith Thompson

আমি আমার অন্য মন্তব্য মুছে ফেলব। নতুন মন্তব্য: কিথ পাথ উল্লেখ /var/spool/cron/crontabs/<USER>। SUSE এ, আমার পথ সামান্য ভিন্ন (অতিরিক্ত স্ল্যাশ নোট করুন): /var/spool/cron/cron/tabs/<USER>। চিন্তিত আমি আমার মত cron এবং linux নতুনbies জন্য এটি উল্লেখ করবে। কিথ এর উত্তর সঠিক।
mountainclimber

4

সম্পূর্ণ crontab পুনরুদ্ধারের জন্য স্ক্রিপ্ট

আমি একটি পিএইচপি স্ক্রিপ্ট তৈরি করেছি যা লগের উপর ভিত্তি করে আপনার crontab এর সম্পূর্ণ পুনরুদ্ধার করে।

এটি গত সপ্তাহের জন্য ব্যবহারকারী দ্বারা চালিত প্রতিটি ক্রন কমান্ডের একটি একক উদাহরণ আউটপুট।

আমি এটা এখানে রাখুন

https://github.com/dangreenisrael/recover_crontab

এখানে একটি নমুনা আউটপুট:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh

0

যদি আপনার সম্পাদক পরিবেশ পরিবর্তনশীল হয় EDITOR = vi, চেষ্টা করুন

vi -r

অধিবেশন পুনরুদ্ধার করতে। আপনি এক পেতে, যদি, সংরক্ষিত সেশন সরাসরি লিখুন না আপনার crontab ডিরেক্টরি। ব্যবহার করে আপনার crontab পুনরায় তৈরি করার জন্য একটি গাইড হিসাবে এটি ব্যবহার করুন

crontab -e

দ্রষ্টব্য: যেহেতু আপনি কোনও OS, Solaris এবং অন্যান্য ইউনিক্স OS নির্দিষ্ট না করে ক্রোন্ট্যাব-এর মাধ্যমে তৈরি ক্রোন্টব ফাইলগুলিতে পরিবর্তনগুলি সনাক্ত করেন না। আমি সঠিকভাবে মনে করি, লিনাক্স আছে।


পুনরুদ্ধারের জন্য কোন অধিবেশন নেই; OP টাইপ করা crontab বরং crontab -e। আপনার crontab বজায় রাখার জন্য একটি ভাল (IMHO) উপায় জন্য আমার উত্তর দেখুন।
Keith Thompson

0

আমি দুঃখিত, কিন্তু আমি সুস্পষ্ট জিজ্ঞাসা করতে সাহায্য করতে পারছি না: কেন এটি ব্যাকআপ থেকে পুনরুদ্ধার করবেন না?

Er, দুঃখিত, আমি ইতিমধ্যে প্রস্তাব করা হয়েছে যে দেখুন।


0

@ কেইথ থম্পসন থেকে মহান উত্তর - ভাল ধারণা / var / log / syslog থেকে পুনর্গঠন!

আমি ঘটনাক্রমে আমার ব্যবহারকারী crontab clobbered কিন্তু নিম্নলিখিত স্ক্রিপ্ট-FU সঙ্গে এটি পুনর্গঠন করতে সক্ষম হয়েছিল

mkdir ~/syslog
sudo cp /var/log/syslog* ~/syslog/
sudo chmod 777 ~/syslog/*
cat ~/syslog/* | grep "(username)" | grep -o "CMD.*" | sort | uniq

যেখানে ইউজারনেম ব্যবহারকারীর সাথে প্রতিস্থাপন করা উচিত যার crontab আপনি পুনর্গঠন করতে চান।

নোট করুন যে লগগুলি সংকুচিত হয়ে গেলে আপনার /var/log/syslog.x.gz ফাইলগুলির সামগ্রীগুলিকে বন্দুকধারীর দরকার হতে পারে (ubuntu zips up syslog.2 +)

এটি কেবলমাত্র লগগুলিতে থাকা কমান্ডগুলিও পাবে যা শেষ 7 দিনের কথা হবে ... তাই যদি আপনার মাসিক কাজ থাকে যা চালানো হয়নি ... সেটি সম্ভবত চলে গেছে

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