কোন ব্যবহারকারী স্ক্রিপ্ট চালাবেন তা ক্রোনটবে কীভাবে নির্দিষ্ট করবেন? [বন্ধ]


176

আমার কাছে কয়েকটি ক্রোন্টাব কাজ রয়েছে যা মূলের নীচে চলে, তবে এটি আমাকে কিছু সমস্যা দেয়। উদাহরণস্বরূপ যে ক্রোন কাজের প্রক্রিয়ায় তৈরি সমস্ত ফোল্ডারগুলি ব্যবহারকারী রুট এবং গোষ্ঠী মূলের অধীনে। আমি কীভাবে এটি ব্যবহারকারীর www-ডেটা এবং গোষ্ঠী www-ডেটার অধীনে চলতে পারি তাই যখন আমি আমার ওয়েবসাইট থেকে স্ক্রিপ্টগুলি চালনা করি তখন আমি fold ফোল্ডারগুলি এবং ফাইলগুলি পরিচালনা করতে পারি?

আমার সার্ভার উবুন্টুতে চলে।
বর্তমান crontab কাজটি হ'ল:

*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1

উত্তর:


335

রুট ব্যবহারকারী হিসাবে চালানোর জন্য কোনও ক্রন্টব তৈরি করার পরিবর্তে, আপনি যে স্ক্রিপ্টটি চালাতে চান সেই ব্যবহারকারীর জন্য একটি ক্রন্টব তৈরি করুন। আপনার ক্ষেত্রে, crontab -u www-data -ewww-ডেটা ব্যবহারকারীর জন্য ক্রন্টব সম্পাদনা করবে। কেবলমাত্র আপনার সম্পূর্ণ কমান্ডটি সেখানে রাখুন এবং এটি ব্যবহারকারীর ক্রন্টব থেকে মুছে ফেলুন।


54
আপনি যখন crontab -eনির্দিষ্ট ব্যবহারকারী হিসাবে ব্যবহার করেন এটি একইভাবে কাজ করে ।
কুলাক

7
তবে এই ক্রন্টবটি কি সিস্টেম স্টার্ট-আপ বা কেবলমাত্র ব্যবহারকারী লগ ইন করার সময় চেক করা হবে?
ব্রুনো ফিঙ্গার

11
cron* নিক্স সিস্টেমে কোনও নির্দিষ্ট ব্যবহারকারীর ক্রন্টবায় নির্দিষ্ট কাজগুলি চালানোর জন্য লগইন করার জন্য কোনও ব্যবহারকারীর প্রয়োজন হয় না।
মাইক 13

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

49

সম্পাদনা: নোট করুন যে এই পদ্ধতিটি ক্রন্টব-এর সাথে কাজ করবে না, তবে কেবলমাত্র আপনি যদি / ইত্যাদি / ক্রন্টব সম্পাদনা করেন তবেই কাজ করে। অন্যথায়, আপনি এর মতো একটি ত্রুটি পেতে পারেন/bin/sh: www-data: command not found

প্রোগ্রামের নামের ঠিক আগে:

*/1 * * * * www-data php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1

এটি এটি অ্যাপাচি ব্যবহারকারীর ডাইনি হিসাবে চালিত করবে ডাব্লু-ডায়াগুলি সঠিক?
আর্মা

19
মনে রাখবেন যে এই পদ্ধতিটি দিয়ে কাজ করবে না crontab -e, তবে কেবলমাত্র আপনি /etc/crontabসরাসরি সম্পাদনা করলে কাজ করে। আরও তথ্যের জন্য এই ফাইলের শীর্ষে মন্তব্যটি পড়ুন।
imgx64

5
ব্যবহারকারী কেবল সিস্টেম ক্রন্টেব
জেমস রথ

সিস্টেম ক্রন্টব-এর সময়সূচীতে আমার কয়েকটি কাজ রয়েছে। আমি যখন করি তখন আমি sudo crontab -eচাকরিগুলি দেখি। তবে আমি ফাইলটি খুলি /etc/crontabসেখানে কোনও চাকরি নেই। এই কি অদ্ভুত? এছাড়াও যদি আমি sudo crontab -eএবং ব্যবহারকারী নির্দিষ্ট করে দিয়ে একটি কাজ যুক্ত করি , তবে তা কি কার্যকর হবে?
eNeMetcH

14

যেহেতু আপনি উবুন্টু চালাচ্ছেন, আপনার সিস্টেম ক্রোনটবটি অবস্থিত /etc/crontab

রুট ব্যবহারকারী হিসাবে (বা sudo ব্যবহার করে) আপনি সহজেই এই ফাইলটি সম্পাদনা করতে পারেন এবং এই কমান্ডটি ব্যবহার করা উচিত এমন ব্যবহারকারীকে নির্দিষ্ট করতে পারেন। এখানে সিস্টেম ক্রন্টব এন্ট্রিগুলির ফর্ম্যাট এবং আপনার আদেশটি কীভাবে প্রবেশ করা উচিত তা এখানে:

# m h dom mon dow user  command
*/1 * * * * www-data php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1

অবশ্যই আপনার পিএইচপি স্ক্রিপ্ট এবং আপনার লগ ফাইলের জন্য অনুমতিগুলি সেট করা উচিত যাতে www-dataব্যবহারকারীর এগুলিতে অ্যাক্সেস থাকে।


আমি ভেবেছিলাম এটি crontab -eযদিও সমতুল্য হওয়া উচিত ; কিন্তু না.
লিঙ্কিং

5
উবুন্টু ডক্সটি সম্পাদনা / etc / crontab না করার পরামর্শ দিয়েছে কারণ এটি আপডেটের মাধ্যমে ওভাররাইট করা যেতে পারে। crontab -e / var / spool / cron / crontabs এ একটি ব্যবহারকারী-নির্দিষ্ট ক্রোন ফাইল তৈরি করবে।
হেম

9

আপনি runuserপৃথক ব্যবহারকারী হিসাবে কমান্ড চালাতে (রুট হিসাবে) ব্যবহার করেও চেষ্টা করতে পারেন

*/1 * * * * runuser php5 \
            --command="/var/www/web/includes/crontab/queue_process.php \
                       >> /var/www/web/includes/crontab/queue.log 2>&1"

আরো দেখুন: man runuser


runuserউবুন্টুতে অন্তর্ভুক্ত নয়।
র‌্যাপটার

1
রানুসর উবুন্টুর সর্বশেষ সংস্করণে রয়েছে। এই উত্তরে ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েজ / প্রশ্নস / ১1৯44৪১ / ubuntu-runuser-command , যেমন su, এবং sudo- তে আলোচনা করা হয়েছে বলে চালকের বিকল্প রয়েছে ।
রাসেল ই গ্লাও

8

মাইকের পরামর্শটি "সঠিক পথে" বলে মনে হচ্ছে। আমি এই থ্রেডটি পেরিয়ে এসেছি যাতে ব্যবহারকারীকে vncserverপুনরায় বুট চালনার জন্য নির্দিষ্ট করতে চান এবং আমার সমস্ত ক্রোন জবগুলি এক জায়গায় রাখতে চাইছিলেন।

আমি ভিএনসি ক্রোনটির জন্য নিম্নলিখিত ত্রুটিটি পেয়েছিলাম:

vncserver: The USER environment variable is not set. E.g.:

আমার ক্ষেত্রে, আমি sudoকে এই টাস্কটি চালাতে হবে তা নির্দিষ্ট করতে ব্যবহার করতে সক্ষম হয়েছি ।

@reboot sudo -u [someone] vncserver ...

1
আমি লগগুলিতে এই বার্তাটি পেয়েছি:sudo: sorry, you must have a tty to run sudo
রেনাতো গামা

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