विशिष्ट उपयोगकर्ता के रूप में क्रोन जॉब कैसे चलाएं?


66

मैं अपनी मशीन पर एक विशिष्ट उपयोगकर्ता के रूप में क्रोन जॉब चलाना चाहूंगा। मैं एक क्रोन नौकरी के लिए उपयोगकर्ता को कैसे निर्दिष्ट कर सकता हूं?

क्रोन नौकरियां एक सर्वर (उबंटू 10.0.4 पर चल रही) पर चल रही होंगी। 'उपयोगकर्ता' वे उपयोगकर्ता हैं जो विशेष रूप से विशिष्ट सर्वर साइड कार्यों को करने के लिए बनाए गए हैं। इन 'उपयोगकर्ताओं' में निम्नलिखित सामान्य हैं:

  • सिस्टम पर लॉग इन नहीं कर सकता
  • विशिष्ट फ़ोल्डर / फ़ाइलों तक पहुंच को प्रतिबंधित किया है

जवाबों:


79

मान लें कि आप बस लॉग इन नहीं कर सकते हैं और इसे उस उपयोगकर्ता के crontab में जोड़ सकते हैं, एक फ़ाइल डाल सकते हैं /etc/cron.d। इसे एक सामान्य क्रोनजॉब के रूप में स्वरूपित किया जाना चाहिए, लेकिन एक अतिरिक्त क्षेत्र के साथ। चलाने से पहले कमांड और समय के बाद, उपयोगकर्ता को डालें। आपको अपने सिस्टम पर पहले से ही उदाहरण खोजने में सक्षम होना चाहिए।

उदाहरण:

#<timing>   <user> <command>
11 * * * *  root   /usr/lib/command

मुझे लगता है कि यह सही उत्तर है। मुझे कुछ उदाहरणों की तलाश करनी होगी और कुछ और जांच करनी होगी।
मुर्गीघर

2
मेरे अलावा एक, यह आप क्या चाहते हैं करने के लिए सबसे अच्छा तरीका है। अधिक सटीक रूप से / etc / crontab फ़ाइल में देखें और आप देखेंगे, कि समय टेम्पलेट के बाद और कमांड से पहले वहाँ "रूट" लिखा गया है। इसका मतलब है कि "रूट" उन कमांड्स को चलाता है। बस अपना स्वयं का शेड्यूल जोड़ें और "रूट" के बजाय किसी भी उपयोगकर्ता का उपयोग करें। यह भी ध्यान दें कि यदि आप प्रति उपयोगकर्ता crontabs (एरिक डी द्वारा sugested) का उपयोग करते हैं, तो आप सिस्टम वाइड क्रॉस्टैब (/ etc / crontab और /etc/cron.d) की कार्यक्षमता को ढीला कर सकते हैं।
पटकोस सेबा

3
अधिमानतः समाधान मुझे लगता है कि crontab -u <user> -eसब कुछ एक ही स्थान पर रखना होगा, जिसे आप रूट के रूप में कर सकते हैं। मैं अपने क्रोन जॉब्स को फंक्शन द्वारा समूहित करना पसंद करता हूं, हालांकि, केवल उपयोगकर्ता द्वारा इसके बजाय, इसलिए यह मेरे लिए बेहतर समाधान है।
स्टुअर्ट एच।

41

रूट के रूप में, उपयोगकर्ता के क्रोन को संपादित करने के लिए:

crontab -u user1 -e

आप इसके साथ अपनी कमांड भी शुरू कर सकते हैं:

su user1 -c foo bar

लेकिन अक्सर, जब रूट के रूप में शुरुआत की जाती है तो स्क्रिप्ट खुद ही अपनी पहुंच कम कर देती हैं।


1

मैं कुछ हफ्तों के लिए यह देख रहा हूँ और यह अंत में काम किया ...

उपयोगकर्ता के रूप में अपनी स्क्रिप्ट बनाएँ

ssh user1@ipaddress
nano hourly-event.sh

कुछ कमांड दर्ज करें

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

इसे अमल में लाएं

chmod 755 hourly-event.sh

user1 के लिए crontab संपादित करें

sudo crontab -u user1 -e

अपनी स्क्रिप्ट की ओर इशारा करते हुए नीचे एक रेखा डालें

# m h  dom mon dow   command
*   *   *   *   *    bash ./hourly-event.sh

निकास - बचत परिवर्तन (यह बचत करते समय / tmp निर्देशिका दिखाएगा ... यह ठीक है)

मिनट की बारी का इंतजार करें

अपना नया बनाएँ yay.txt खोलें

nano /home/user1/yay.txt

अब आपके पास "ये काम करता है" के साथ एक नैनो विंडो खुली होनी चाहिए, यदि आपकी नैनो विंडो के निचले हिस्से को नई फ़ाइल ... अच्छी तरह से कहा जाए तो मैं पहली और एकमात्र पंक्ति हूं।

आप user1 के लिए अपनी नई crontab प्रविष्टि की जांच यहां भी कर सकते हैं: / var / spool / cron / crontabs / user1

शांति


0

कभी-कभी आप चाहते हैं कि उपयोगकर्ता अपने पर्यावरण को लोड कर सकता है, विशेष रूप से "rbenv", "nvm" का उपयोग करते समय, इस तरह:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(यहां कमांड source ~/.bash_profileआपको रूबी या नोड वातावरण लोड करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.