নির্দিষ্ট ব্যবহারকারী হিসাবে ক্রন্টব চলমান


20

আমার প্রতিদিন স্ক্রিপ্ট চালানো দরকার। স্ক্রিপ্টটি কোনও নির্দিষ্ট ব্যবহারকারীর হিসাবে চালানো উচিত (প্রাক্তন ব্যবহারকারী 1) মূল হিসাবে নয়। সুতরাং আমি ক্রোন ফাইলটি /etc/cron.d এ রেখেছি এবং ব্যবহারকারীর নামটি লাইনে রেখেছি (২ য় কলাম)। কিন্তু এটি একটি ত্রুটি দেয় যা কমান্ডটি পাওয়া যায় নি। আমার সন্দেহ হয় যে স্ক্রিপ্টটি ইউজার 1 এর পরিবেশ হিসাবে চালিত হয়নি। আমি কি কিছু রেখে গেলাম?


3
আপনি যে ক্রন্টব এন্ট্রি ব্যবহার করছেন তা দয়া করে আমাদের দেখাতে পারেন?
ব্যবহারকারী 9517

উত্তর:


34

কেবলমাত্র /etc/crontabএবং ফাইলগুলির মধ্যে /etc/cron.d/একটি ব্যবহারকারীর নাম ক্ষেত্র রয়েছে। সেই ফাইলটিতে আপনি এটি করতে পারেন:

1 1 * * * username /path/to/your/script.sh

রুটের ক্রন্টব থেকে sudo crontab -eআপনি ব্যবহার করতে পারেন:

1 1 * * * su username -c "/path/to/your/script.sh"

অথবা আপনি ব্যবহারকারীর আসল ক্রন্টবটি এটির মতো ব্যবহার করতে পারেন:

sudo crontab -u username -e

যে কোনও ক্রন্টব ফাইলের দ্বিতীয় কলামটি সেই সময়ের জন্য যা আপনি কাজটি চালাতে চান। আপনি কি ষষ্ঠ ক্ষেত্র বোঝাতে চেয়েছিলেন?


/Etc/cron.d এ ফাইলটি ব্যবহারকারীর যুক্তি গ্রহণ করবে: help.ubuntu.com/commune/CronHowto#Advanced_Crontab এবং আপনি যদি মূল হিসাবে চালাচ্ছেন তবে আপনি কেন "sudo su" করছেন? যে কোনও ক্ষেত্রে, আপনি "su -l" ব্যবহারকারীর জন্য লগইন পরিবেশটি ব্যবহার করতে চাইবেন, যেহেতু এটি সম্ভবত সমস্যার বর্ণনা থেকে কোনও প্যাথ সমস্যা।
সিজেসি

/Etc/cron.d এ ফাইলগুলি কি / etc / crontab এর এক্সটেনশন নয়? সিস্টেমগুলিতে আমাকে /etc/cron.d এর সমস্ত ফাইল হস্তান্তর করতে হবে একটি ব্যবহারকারী নাম নির্দিষ্ট করে আছে।
ব্যবহারকারী 9517

আহ, সত্যিই। /etc/cron.d/ফাইল হয় অংশ /etc/crontabsudoঅর্থহীন। আমি সেই অংশটি সরিয়ে ফেলব।
লাদাদাদাদা

2
ক্রোনটবে সুডো স্থাপন সম্পর্কে: (ক) sudo su... সাধারণত অপ্রয়োজনীয়; sudo -u <user> <command>সাধারণত পর্যাপ্ত। (খ) টিটিওয়াই সংযুক্ত না থাকলে সুডো কয়েকটি সিস্টেমে শ্বাসরোধ করবে (যেমন ক্রোন দিয়ে চালিত হলে)। এটি আপনার sudoers ফাইলে স্থির করা যেতে পারে।
টাইলারেল

4

আপনার ব্যবহারকারীর জন্য PATH সেট করার দরকার হতে পারে, আপনি যদি ব্যবহারযোগ্য নির্বাহযোগ্য হয় তবে, / usr / স্থানীয় / বিন বলুন। PATH সেট করতে, ক্রোনজবসের আগে এরকম কিছু রাখুন:

PATH=/bin:/usr/bin:/usr/local/bin

*/5 * * * * user1 sample_executable

অন্য উপায়টি হ'ল আপনার ক্রোনজবলে স্যাম্পল_অ্যাকটিভেটেবলের পথটি সম্পূর্ণরূপে নির্দিষ্ট করা, সুতরাং:

*/5 * * * * user1 /path/to/sample_executable

যদি স্যাম্পল_এক্সেকিউটেবল স্ট্যান্ডার্ড PATH এ না পারে এক্সিকিউটেবলগুলিকে বোঝায় তবে আপনার প্রথম বিকল্পটি ব্যবহার করা উচিত।


1

ব্যবহারকারী ক্রন্টাবগুলির জন্য আদর্শ ডিরেক্টরিটি / var / spool / ক্রোন / ক্রন্টাবগুলিতে রয়েছে। ফাইল ফর্ম্যাটটি এমন একটি যা ব্যবহারকারীর নামটি অন্তর্ভুক্ত করে না। ব্যবহারকারীর ক্রন্টাবগুলি ব্যবহারকারীর মালিকানাধীন এবং 0600 মোডের সাথে ব্যবহারকারীর নামানুসারে your আপনার ট্যাব ফাইলটি লিখে crontab -u username filenameএবং সেই ব্যবহারকারীর জন্য আপনি যে কোনও ক্রোন এন্ট্রি চান সেটআপ করার মাধ্যমে এটি সর্বোত্তমভাবে পরিচালিত হয় ।

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