স্থায়ীভাবে কীভাবে ক্রোন PATH সেট করবেন?


10

সমস্ত ব্যবহারকারীর জন্য ক্রোন পথে আমাদের / ইউএসআর / স্থানীয় / বিন থাকা দরকার। প্রতিটি পৃথক ব্যবহারকারীর ক্রোনট্যাব সম্পাদনা করার প্রয়োজন ছাড়াই কি সিস্টেম-ওয়াইড সেট করার কোনও উপায় আছে?

আমরা PATH / etc / crontab এ যুক্ত করার চেষ্টা করেছি:

# grep PATH /etc/crontab
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

তবে ব্যবহারকারীরা যখন তাদের ক্রন্টেব এ রয়েছে:

$ crontab -l | grep PATH
* * * * * echo $PATH > /tmp/current_cron_path

... এটি প্রকাশ করে যে তাদের পথটি এখনও ডিফল্টে সেট করা আছে:

$ cat /tmp/current_cron_path
/usr/bin:/bin

2
সাধারণ ইঙ্গিত: "এটি কাজ করে না" লিখলে সাধারণত আপনার দরকারী উত্তর পাওয়া যায় না। এটি ঠিক কীভাবে কাজ করে নি ঠিক তা হ'ল সর্বদা বর্ণনা করুন , এটি হ'ল আপনি কী করেছিলেন এবং ফলস্বরূপ কী হয়েছিল।
স্ল্যাসকে

উত্তর:


4

আপনি ব্যতীত আপনার কোডটি ক্রোনটাব কনফিগারেশন ফাইলে কনফিগার করতে পারেন সেখানে প্রথম কোড ছাড়াও । প্রথমে এনভ ভেরিয়েবল নির্দিষ্ট করুন, তারপরে কাজ নির্দিষ্ট করুন।

ইউপিডি: লিঙ্কটি নষ্ট হয়ে যাওয়ার কারণে, এখানে একটি অংশ রয়েছে:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

1
ক্রোন পুনরায় চালু করার পরেও উবুন্টুতে কাজ করে না
গ্রোসার

1
@ গ্রোসার: ঠিক আছে, এটা করা উচিত। এটি তৈরি করে আউটপুট এবং আপনার বিশ্বাস কেন এটি কার্যকর হয় না তা সহ আপনার সম্পূর্ণ ক্রোনট্যাব (আপনার উত্তর সম্পাদনা করুন) পোস্ট করুন। তারপরে আমরা দেখতে পাব ...
স্ল্যাস্ক করুন

এছাড়াও নোট করুন যে শাড়ির স্ক্রিপ্টের তুলনায় VARIABLE = মান লাইনের বিন্যাসটি কিছুটা বেশি সীমাবদ্ধ: প্রতিটি অ্যাসাইনমেন্ট অবশ্যই তার নিজের লাইনে থাকতে হবে, এবং আপনি ডানদিকের দিকের ভেরিয়েবলগুলি ব্যবহার করতে পারেন না (যেমন PATH = $ PATH: / bla কাজ করবে না)।
স্লেস্কে

আমি প্রশ্নটি আপডেট করেছিলাম, পৃথক ক্রোন্টাবের মধ্যে PATH নির্ধারণ কাজ করেছিল, কেবল বিশ্বব্যাপী পরিবর্তন কার্যকর হয়নি
গ্রোসার

আপনার যেখানে প্রয়োজন সেখানে প্রতিটি ক্রোনটবে PATH ভেরিয়েবলগুলি উল্লেখ করার চেষ্টা করুন। সম্ভবত এটি সুরক্ষা সমস্যার কারণে সম্পন্ন হয়েছে। বিটিডাব্লু, উবুন্টুতে (আমি পরীক্ষা করে দেখেছি) প্যাথটিকে উবুন্টুতে / etc / crontab এবং /etc/cron.d/anacron এ সংজ্ঞায়িত করা হয়েছে। সুতরাং মনে হচ্ছে এটি / etc / crontab থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হচ্ছে না। কেবল এটির মূলের sudo crontab -e
ক্রন্টাব

3

PATH ভেরিয়েবল সেট করা উবুন্টুতে কাজ করা উচিত, আপনি কীভাবে বলবেন যে এটি কাজ করছে না?

# 14 দেখুন: লিনাক্স ক্রোনটাব: 15 টি দুর্দান্ত ক্রোন কাজের উদাহরণ


আমি প্রশ্নটি আপডেট করেছিলাম, পৃথক ক্রোন্টাবের মধ্যে PATH নির্ধারণ কাজ করেছিল, কেবল বিশ্বব্যাপী পরিবর্তন কার্যকর হয়নি
গ্রসার

1

আমি এর জন্য কোনও সমাধানও পাইনি। একটি শালীন সমাধানের নিকটে আমার সবচেয়ে কাছেরটি হ'ল নিম্নলিখিতটি ( https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html থেকে নেওয়া )।

  • আপনার ক্রোন কাজের জন্য শেলটি পরিবর্তন করুন এবং এটি একটি ব্যাশ স্ক্রিপ্টে নির্দেশ করুন। অর্থাত, ক্রোনজবের শীর্ষে যুক্ত করুন: SHELL=/path/to/setup/cron.bash
  • এই শেল স্ক্রিপ্টে, পরিবেশের ভেরিয়েবলগুলি লোড করুন এবং অন্যান্য ভারগুলি নির্দিষ্ট করুন। নীচে নিম্নলিখিত 4 টি লাইন অন্তর্ভুক্ত নিশ্চিত করুন। এটি ব্যাচে শেল পরিবর্তনশীলটি পুনরায় সেট করে এবং ক্রোনজবগুলি চালাতে ব্যাশ শেলটি কার্যকর করে।

উদাহরণ স্বরূপ:

#!/bin/bash
set -e

source /etc/environment
source /etc/profile
# restore SHELL env var for cron
SHELL=/bin/bash

# execute the cron command in an actual shell
exec /bin/bash --norc "$@"

ডাউনসাইড: এর জন্য আপনাকে SHELL=...প্রতিটি ক্রোনজবের শীর্ষে নির্দিষ্ট করতে হবে। উল্টোদিকে: আপনি নিয়মিত পরিবেশের ভেরিয়েবল ব্যবহার করবেন এবং ক্রোন এবং অন্যদের মধ্যে নিয়মিত পরিবর্তনশীল রাখার বিষয়ে আপনাকে চিন্তা করতে হবে না


0

আপনি যদি মূল হতে সক্ষম হন তবে আপনি কি /etc/init.d/cronসেখানে পাঠাথ সম্পাদনা এবং পরিবর্তন করার চেষ্টা করতে পারেন ? আমি এটি পরীক্ষা করেছি না, তবে এটি চেক করা আকর্ষণীয় হবে।


দেখে মনে হচ্ছে না, আমি PATH = xxx কে /etc/init.d/cron এ যুক্ত করেছি তবে * * * * * প্রতিধ্বনি $ প্যাট আউটপুট একই ছিল
গ্রোসার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.