मैं क्रोन से सीधे एक कार्यक्रम शुरू क्यों नहीं कर सकता?


1

मैं वर्तमान में एक रास्पबेरी पाई स्थापित कर रहा हूं, जो एक आईआरसी सर्वर के रूप में डेबियन व्हीज़ी चल रही है। यह बूट पर एक नियमित उपयोगकर्ता के रूप में दो कार्यक्रम चलाता है - ngircd और atheme।

ngircd और atheme दोनों लॉग इन करते हैं /var/log/syslog

ngircd निष्पादन योग्य ( /usr/local/sbin/ngircd ) से शुरू होता है, जैसा कि Atheme ( /home/user/atheme/bin/atheme-services) है। मैन्युअल रूप से एक टर्मिनल से उपयोगकर्ता के रूप में प्रोग्राम शुरू करने से कोई समस्या नहीं होती है।

जब मैं क्रोन से एनक्रिच्ड (स्थान को इसके स्थापित) का उपयोग करना शुरू करने की कोशिश करता हूं, तो यह बस शुरू नहीं होता है - /var/log/syslogकहते हैं कि क्रोन नौकरी चलती है, लेकिन कुछ भी नहीं होता है, कोई त्रुटि संदेश नहीं है, या कोई भी एनक्रिबिक संबंधित लॉग बिल्कुल भी नहीं है। एठमे ठीक होने लगता है।

हालांकि अगर मैं एक ऐसी स्क्रिप्ट बनाता हूं जो कुछ नहीं करता है, लेकिन एनगर्ड चलाएं (उसी रास्ते का उपयोग करें जो मैंने पहले इस्तेमाल किया था), और उस क्रोन में जोड़ें, यह ठीक काम करता है (जैसा कि इसे सीधे चलाना है)। Cron से क्यों नहीं शुरू होता है?

यह एक बड़ा मुद्दा नहीं है, लेकिन यह सिस्टम को जितना मैं चाहता हूं उससे थोड़ा अधिक गड़बड़ कर सकता है। यह भी अजीब है कि दोनों कार्यक्रम अलग तरह से व्यवहार करते हैं

जवाबों:


1

मुझे टिप्पणी करने का विशेषाधिकार नहीं है, इसलिए मैं स्पष्टीकरण के लिए नहीं कह सकता, लेकिन मैं सुझाव दूंगा कि किसी इनस्क्रिप्ट से या rc.local से, और क्रोन से नहीं। क्रोन का उपयोग आमतौर पर एक निश्चित समय पर , नियमित रूप से चीजों को निष्पादित करने के लिए किया जाता है । डेमन और सेवाओं की हैंडलिंग आमतौर पर आपके इनिट सिस्टम के लिए एक काम है

बूट पर एक नियमित उपयोगकर्ता के रूप में कुछ चलाने के लिए:

इसे /etc/rc.local में जोड़ें :

/bin/su -c '/path/to/your/executable args &' -s /bin/bash username >/dev/null 2>&1

'क्यों' के लिए - मैं आमतौर पर आईआरसी को एक अलग उपयोगकर्ता के रूप में चलाता हूं, पूरी तरह से प्रतिबंधित विशेषाधिकारों के साथ, और यह मानते हुए कि मेरे पास बाकी सिस्टम तक कोई पहुंच नहीं है। मेरे द्वारा उपयोग किया जाने वाला irc सेटअप परीक्षण की तरह है, और उन लोगों की मदद करने के लिए जो स्वयं का IRC सेटअप चाहते हैं। मैं आम तौर पर एनगिरैक नहीं करता, लेकिन कोंट्रेब का उपयोग मेरे पुराने अवास्तविक / एनोप सेटअप से किया जाता है। @ रिबूट उपयोगकर्ता स्तर के अनुप्रयोगों को शुरू करने का एक बिल्कुल स्वीकार्य तरीका है। जब @ रिबूट चलाते समय मेरा सेटअप विफल हो रहा है, तो वही कार्यक्रम संभवतः समय पर विफल होने पर पहचान में विफल हो जाएगा। मुझे यह 'काम ’लगा। मैं जानना चाहता हूं कि यह विफल क्यों है।
जर्नीमैन गीक

यकीन नहीं होता, जाहिर है कि आपने इस बग को मारा: unix.stackexchange.com/questions/109804/…
rexkogitans

0

क्रोन कुछ ऐसा चलाता है जो बिल्कुल व्यवहार करता है

sudo - user /path/to/command

या

su user
/path/to/command

यदि आप यह जांचना चाहते हैं कि क्या आपकी कमांड निष्पादित होती है, तो आपको इसे इस तरह से परीक्षण करना होगा।

आप या तो उपयोगकर्ता-crontab के साथ संपादित कर सकते हैं

crontab -e

या सिस्टम-वाइड क्रैस्टैब रूट के साथ

nano /etc/crontab

या नैनो के अलावा आपके पसंदीदा संपादक ( sudoयदि आवश्यक हो तो साथ दें)। ध्यान दें कि इन दो crontabs सिंटैक्स में भिन्न होते हैं कि सिस्टम-वाइड crontab में निष्पादन समय और कमांड के बीच एक अतिरिक्त कॉलम होता है जो उपयोगकर्ता को कमांड चलाने के लिए निर्दिष्ट करता है। आप चाहते हैं कि आपका निष्पादन समय @rebootनिम्न पर सेट हो :

@reboot user /usr/local/sbin/ngircd
@reboot user /home/user/atheme/bin/atheme-services

userयदि आप उपयोगकर्ता crontab के साथ संपादन कर रहे हैं तो बस शब्द को छोड़ दें crontab -e

विकल्प के रूप में, आप सिस्टम वी के इनस्क्रिप्ट या सिस्टमड की सर्विस कंट्रोल फाइल्स का इस्तेमाल कर सकते हैं, जो आपके पास मौजूद सिस्टम पर निर्भर करता है।


ओह, मैं इससे परिचित था जब मैंने इसे पोस्ट किया था। समस्या उन ऐप्स में से एक थी जो बिल्कुल भी नहीं चल रही थीं , और अगर मैं सही तरीके से याद करता हूं, तो इसे "ircuser" नामक उपयोगकर्ता और उसके लिए एक क्रॉस्टैब के रूप में चलाया गया था।
जर्नीमैन गीक

मैंने अपनी पोस्ट को उस सटीक कमांड को प्रतिबिंबित करने के लिए संपादित किया जिसे आपको परीक्षण करना है, सिर्फ इसलिए कि मैं इस बहुत पर ठोकर खाई थी, भी। "उपयोगकर्ता" को "ircuser" से बदलें, जहाँ ज़रूरत हो।
rexkogitans
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.