দৈনিক ক্রোন কাজ চলছে না


10

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

সুতরাং সমস্যাটি হ'ল আমি এটি প্রতিদিন চালাতে চাই, সুতরাং আমি এটির একটি লিঙ্ক /etc/cron.daily ডিরেক্টরিতে রেখেছি। এখানে ডিরেক্টরি বিষয়বস্তু।

thom@spenser:/etc/cron.daily$ ls -l
total 60
-rwxr-xr-x 1 root root   189 2011-09-14 02:21 apport
-rwxr-xr-x 1 root root 15535 2011-10-06 11:30 apt
-rwxr-xr-x 1 root root   314 2011-08-08 16:57 aptitude
lrwxrwxrwx 1 root root    24 2012-02-28 11:05 backup -> /usr/local/bin/backup.sh
-rwxr-xr-x 1 root root   502 2011-06-08 11:48 bsdmainutils
-rwxr-xr-x 1 root root   256 2011-10-06 04:04 dpkg
-rwxr-xr-x 1 root root   372 2011-10-04 16:50 logrotate
-rwxr-xr-x 1 root root  1353 2011-07-27 07:17 man-db
-rwxr-xr-x 1 root root   606 2011-08-17 09:16 mlocate
-rwxr-xr-x 1 root root   249 2011-06-24 05:36 passwd
-rwxr-xr-x 1 root root  2417 2011-07-01 17:25 popularity-contest
-rwxr-xr-x 1 root root   383 2011-09-30 15:09 samba
-rwxr-xr-x 1 root root  3594 2011-09-19 20:07 standard
thom@spenser:/etc/cron.daily$ 

সমস্যাটি হ'ল এটি কখনও চালায় না। এখানে এই স্ক্রিপ্টের অনুমতি রয়েছে:

thom@spenser:/etc/cron.daily$ ls -l /usr/local/bin/backup.sh 
-rwxr-xr-x 1 root root 260 2012-02-28 11:03 /usr/local/bin/backup.sh

ধারনা?


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

উত্তর:


37

এই চেষ্টা

run-parts --test /etc/cron.daily

খুঁজে পেয়েছি যে আমার ফাইল আপডেট.বুন্টু আসেনি। এছাড়াও লক্ষ্য করা গেছে যে আমার ফাইলটির একটি এক্সটেনশন ছিল (এতে ডট রয়েছে)।

এটি ঠিক করার পদক্ষেপ

  1. আমার নতুন নামকরন করা update.ubuntu করার আপডেট-উবুন্টু
  2. এখন আবার run-parts --test /etc/cron.daily, এবার আমার ফাইলটি এলো!

1
হ্যাঁ, এটি আমার জন্য এটি স্থির করে দিয়েছে। ফাইলের নামের মতো বিন্দু পছন্দ করে না, আমার ফাইলটির নাম মাইক্রিপ্ট থেকে নাম পরিবর্তন করে আমার কাছে কাজ করে ম্যাস্ক্রিপ্টে mys
ম্যাট পার্কিন্স

3
এটি আরও বেশি হওয়া দরকার। আমি আমার স্ক্রিপ্টটি প্রচলিত "ব্যাকআপ.শ" হিসাবে সংরক্ষণ করেছি had ".Sh" অংশটি সরানো এটি সমাধান করেছে। অসংখ্য ধন্যবাদ!
ডেভিড

ধন্যবাদ! দৈনিক ক্রোন থেকে স্পষ্টত .sh ফাইলগুলি মুছে ফেলার সিদ্ধান্ত নিয়েছে এমন লোক / গালকে লজ্জা দেওয়া উচিত!
সিলভাইন

প্রকাশ্যে মারপিট করা উচিত! ;-) আমি অবাক হই যে এই সিদ্ধান্তের ফলে লোকেরা সম্মিলিতভাবে কতটা সময় হারাতে পেরেছিল ... আমিও আশ্চর্য হয়েছি যে এর কোনও কারণ আছে কিনা?
xastor

3

বেশ কয়েকটি জিনিসের একটি হতে পারে:

মূলের পথ:

কমান্ডগুলি চালিত হচ্ছে তার উপর নির্ভর করে আপনার নীচের লাইনটি তাদের ক্রন্টব ফাইলের শীর্ষে রেখে মূল ব্যবহারকারী PATH ভেরিয়েবলটি প্রসারিত করতে হবে:

পাথ = / usr / sbin / usr / বিন: পক্ষ থেকে / sbin: / বিন

src: https://help.ubuntu.com/commune/CronHowto

অথবা আপনার স্ক্রিপ্টের প্রতিটি কমান্ডের পুরো পথ ব্যবহার করুন: উদাহরণের /bin/lsপরিবর্তে ls। ( which lsপাথের জন্য কমান্ড লাইনে)।

এখানে উল্লিখিত ফাইলের নামগুলিতে বিন্দু সম্পর্কে একটি অদ্ভুত বাগ রয়েছে । আপনি যে ফাইলটির সাথে লিঙ্ক করছেন সেটি বাড়িয়ে দিতে পারে, যদিও এটি অসম্ভব বলে মনে হচ্ছে।

আপনি কি ব্যাকআপ ফাইল থেকে আউটপুট সংরক্ষণ করছেন? এটি প্রথমদিকে চলমান বা চলমান নয় তবে কোনও সময়ে ব্যর্থ হচ্ছে কিনা তা নির্ধারণে সহায়তা করার জন্য প্রথম লাইনে এই জাতীয় কিছু রাখুন।

/bin/echo "Attempting to run backup" >> /path-to-home/backup.log

বিকল্পভাবে সরাসরি ক্রন্টব ফাইলটিতে স্ক্রিপ্ট যুক্ত করার চেষ্টা করুন:

sudo -i
crontab -e
[add the next line to the file, then save and exit]
33 15 * * * /usr/local/bin/backup.sh

মেশিন চালু থাকলে প্রতিদিন 15:30 টায় চলবে। আপনি এটি কাজ না করা পর্যন্ত মিনিটে একবার চালানোর জন্য টেস্ট করার সময় * * * * * ব্যবহার করুন।


1
স্ক্রিপ্টগুলিতে পরম পাথ ব্যবহার করা নিরুৎসাহিত করা হয়। PATH কী তা আপনি যদি না জানেন তবে নিজেকে স্ক্রিপ্টে সেট করুন।
ক্রন্টব

দরকারী লিঙ্ক, ধন্যবাদ। পূর্ণ পথ ব্যবহার না করার প্রদত্ত কারণ হ'ল বহনযোগ্যতা। যথেষ্ট ফর্সা। আরেকটি যুক্তিসঙ্গত সমাধান হ'ল স্ক্রিপ্টের শুরুতে আপনি যে কমান্ডগুলি ব্যবহার করছেন সেটি অন্যান্য কনফিগারেশনের সাথে সংজ্ঞা দেওয়া: এলএস = / বিন / এলএস; SRC_DIR = / হোম / জো / src। তারপরে $ এলএস $ এসআরসি_ডিআইআর ব্যবহার করুন। শীর্ষে এবং এক জায়গায় সংজ্ঞায়িত সমস্ত কিছুই রাখে।
শান

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

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

1

আপনার syslog যেমন বার্তাগুলির জন্য গ্রেপ;

crond: (*system*) BAD FILE MODE

ফাইলগুলি সীমাবদ্ধ করা দরকার (পর্যাপ্ত) 644 এ:

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