स्थायी रूप से (सभी उपयोगकर्ताओं के लिए) cron PATH कैसे सेट करें?


10

हमें सभी उपयोगकर्ताओं के लिए क्रोन के रास्ते में usr / usr / लोकल / बिन होना चाहिए। क्या प्रत्येक व्यक्ति के उपयोगकर्ता के क्रैस्टब को संपादित करने की आवश्यकता के बिना इसे सिस्टम-वाइड सेट करने का एक तरीका है?

हमने PATH को / etc / crontab में जोड़ने का प्रयास किया है:

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

लेकिन जब उपयोगकर्ताओं को यह उनके crontab में है:

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

... इससे पता चलता है कि उनका मार्ग अभी भी तयशुदा है:

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

2
सामान्य संकेत: लेखन "यह काम नहीं किया" आमतौर पर आपको एक उपयोगी उत्तर नहीं मिलेगा। हमेशा वर्णन करें कि यह वास्तव में कैसे काम नहीं करता था, अर्थात, आपने क्या किया था, और वास्तव में इसका परिणाम क्या था।
1914 को सलेस्के

जवाबों:


4

आप अपने PATH को कॉन्टैब कॉन्फ़िगरेशन फ़ाइल में कॉन्फ़िगर कर सकते हैं जैसा कि पहले कोड में दिखाया गया है । पहले एनवी चर निर्दिष्ट करें, फिर नौकरी निर्दिष्ट करें।

UPD: इस तथ्य के कारण कि लिंक टूटा हुआ है, यहाँ एक अंश है:

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
ubuntu पर काम नहीं करता है, यहां तक ​​कि क्रोन को फिर से शुरू करने के बाद
grosser

1
@grosser: खैर, यह चाहिए। कृपया अपना पूरा कॉन्टैब पोस्ट करें (अपना उत्तर संपादित करें), इसके साथ-साथ इसका उत्पादन और क्यों आपको लगता है कि यह काम नहीं करता है। फिर हम देखेंगे ...
10:00 बजे

यह भी ध्यान दें कि VARIABLE = मान रेखाओं का प्रारूप शेल स्क्रिप्ट की तुलना में कुछ हद तक प्रतिबंधित है: प्रत्येक असाइनमेंट अपनी स्वयं की लाइन पर होना चाहिए, और आप दाईं ओर वाले वेरिएबल्स का उपयोग नहीं कर सकते हैं (उदाहरण PATH - $) पथ: / कलंक काम नहीं करेगा)।
1912 को सलेस्के

मैंने इस सवाल को अपडेट किया, एक व्यक्तिगत क्रैस्टैब में पैथ को सेट करने से काम चल गया, बस वैश्विक परिवर्तन से काम नहीं चला
ग्रॉससर

प्रत्येक कॉन्टैब में पेटी चर को निर्दिष्ट करने का प्रयास करें जहां आपको इसकी आवश्यकता है। संभवतः यह सुरक्षा मुद्दों के कारण किया गया है। BTW, ubuntu में (मैंने जाँच की है) PATH को / etc / crontab और /etc/cron.d/anacron में ubuntu में परिभाषित किया गया है। तो ऐसा लगता है कि यह / etc / crontab से विरासत में नहीं मिल रहा है। बस इसे रूट के sudo crontab -e
क्रैस्टैब

3

पथ चर को उबंटू में काम करना चाहिए, आप कैसे कहते हैं कि यह काम नहीं कर रहा है?

# 14 देखें: Linux Crontab: 15 विस्मयकारी क्रोन जॉब उदाहरण


मैंने इस सवाल को अपडेट किया, एक व्यक्तिगत क्रैस्टैब में पाथ की स्थापना ने काम किया, बस वैश्विक परिवर्तन से काम नहीं चला
ग्रॉससर

1

मुझे इसके लिए कोई हल नहीं मिला। एक निकटतम समाधान के लिए मुझे जो निकटतम मिला, वह निम्नलिखित है ( https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html )।

  • अपनी क्रोन नौकरी के लिए शेल बदलें और इसे बैश स्क्रिप्ट पर इंगित करें। यानी, क्रोनजोब के शीर्ष पर, जोड़ें: SHELL=/path/to/setup/cron.bash
  • इस शेल स्क्रिप्ट में, परिवेश चर लोड करें और अन्य संस्करण निर्दिष्ट करें। शीर्ष पर निम्नलिखित 4 लाइनें शामिल करना सुनिश्चित करें। यह bash करने के लिए SHELL चर को रीसेट करता है, और cronjobs को चलाने के लिए एक bash शेल निष्पादित करता है।

उदाहरण के लिए:

#!/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 को संपादित करने और बदलने की कोशिश कर सकते हैं ? मैंने इसका परीक्षण नहीं किया है, लेकिन यह देखना दिलचस्प होगा।


काम करने के लिए नहीं लग रहा था, मैंने सिर्फ PATH = xxx को /etc/init.d/cron में जोड़ा, लेकिन * * * * * echo $ PATH का आउटपुट समान था
ग्रोसर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.