अपस्टार्ट स्क्रिप्ट शुरू नहीं होती है


33

उबंटू 10.04

मैंने यह अपस्टार्ट स्क्रिप्ट ( /etc/init/pure-ftpd.conf ) बनाई है। )

# pure-ftpd - FTP server

description "Pure-FTPd server"

start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid
console output

pre-start script
    test -x /usr/local/sbin/pure-ftpd || { stop; exit 0; }
end script

exec /usr/local/sbin/pure-ftpd --maxclientsnumber 2 --maxclientsperip 10 --prohibitdotfileswrite --prohibitdotfilesread --noanonymous --chrooteveryone --dontresolve --nochmod --pidfile /var/run/pure-ftpd.pid

परंतु...

# start pure-ftpd
start: Unknown job: pure-ftpd

तथा

# service pure-ftpd start
start: Unknown job: pure-ftpd


समस्या क्या है?
क्या कुछ और करना आवश्यक है?
क्या /etc/init.d में भी एक स्क्रिप्ट बनाना आवश्यक है?


मैं उसी मुसीबत से मिला। कृपया कंसोल पर initctl कमांड आज़माएं। कंसोल सत्र में प्रवेश करने के लिए, Ctrl + ALT + F1 दबाएँ और लॉगिन करें। (मैं क्यों नहीं समझ सकता, लेकिन मैंने इस तरह से सफलता हासिल की)

जवाबों:


26

इसका आमतौर पर मतलब है कि आपके पास .confफ़ाइल में त्रुटि है - उदाहरण के लिए, मुझे यकीन नहीं है कि pid10.04 में छंद का समर्थन stopकिया गया है, स्क्रिप्ट में उपयोग नहीं किया जा सकता है आदि।

मैं फ़ाइल को स्क्रैच से शुरू करने की कोशिश करूँगा (केवल start, stopआदि के साथ), और फिर धीरे-धीरे इसे अधिक से अधिक लाइनों को जोड़कर और इसके माध्यम से परीक्षण करके निर्माण करना start pure-ftpd

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

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5

# start pure-ftpd
pure-ftpd start/running

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid

# start pure-ftpd
start: Unknown job: pure-ftpd

विकी में जानकारी बहुत पुरानी है ( upstart.ubuntu.com/wiki )। दूसरी तरफ, ल्यूसिड में अपस्टार्ट संस्करण 0.6.5-8 है और पिड फ़ाइल का समर्थन किया जाना चाहिए: upstart.ubuntu.com/wiki/…
जुआन सिमोन

1
AFAIK pidछंद संस्करण के बाद से हटा दिया गया है 0.5.0 2008-08-12 "One of those deaf-mutes"। इसका उपयोग न करें।
व्यवस्था करें

किसी को पता है कि अद्यतन प्रलेखन कहां है?
जुआन सिमोन

46

आप init-checkconfसिंटैक्स की जांच करने के लिए भी दौड़ सकते हैं

init-checkconf /etc/init/job.conf
File /etc/init/job.conf: syntax ok

1
आदेश 10.04 में मौजूद नहीं है, लेकिन यह 12.04 में मौजूद है।
मार्क स्टोसबर्ग

6
लेकिन यह हेडलैस उबंटू 12.04 सर्वर (अभी तक) पर काम नहीं करता है। देखें bugs.launchpad.net/upstart/+bug/881885
FVD

1
मुद्दा सीधा मिला! - startकमांड में बनाया जाना चाहिए ताकि यह आपको अधिक जानकारीपूर्ण त्रुटि संदेश दे सके ...
AT

26

सबसे पहले, आप देख सकते हैं कि आपकी नौकरी वास्तव में ऊपर की ओर जानी जाती है:

sudo initctl list | grep your_job_name

... जहाँ your_job_nameआपके ऊपर की लिपि का नाम .confविस्तार है।

यदि यह नहीं मिला है, तो आप कॉन्फ़िगरेशन को फिर से लोड करने और फिर से जाँच कर सकते हैं:

sudo initctl reload-configuration

# re-check
sudo initctl list | grep your_job_name

फिर अपना काम शुरू करने के लिए फिर से प्रयास करें:

sudo start your_job_name

यदि आपको पहले /var/log/daemon.logया /var/log/syslogपहले कोई लॉगिंग नहीं मिल रही थी, तो अब आपके पास कुछ हो सकता है।


1
और क्या होगा अगर यह दर्शाता है कि नौकरी को ऊपर की ओर नहीं जाना जाता है, भले ही वाक्यविन्यास सही हो और यह / etc / init में रहता है?
FvD

1
क्या आपने सुझाव के अनुसार "sudo initctl reload-configuration" की कोशिश की? क्या आपने अनुमति, लॉग, डॉक्स की जांच की?
मार्क स्टोसबर्ग

मैंने किया, और आपकी टिप्पणी पढ़ने के बाद फिर से किया। यहां तक ​​कि यह सुनिश्चित किया कि उपयोगकर्ता एक सिस्टम-उपयोगकर्ता (useradd -r) था। शायद कुछ और गलत हो सकता है - अपस्टार्ट करने के लिए असंबंधित - इसलिए मैंने उस सेवा के डेवलपर्स को एक मुद्दा पोस्ट किया जिसे मैं शुरू करने की कोशिश कर रहा हूं (यह चमकदार-सर्वर है जिसे मैं बूट पर शुरू करने की कोशिश कर रहा हूं)।
FvD

1
और यह सब के बाद अनुमति थी! हालांकि डायर को सूचीबद्ध करते समय सब कुछ पेचीदा लग रहा था, केवल एक चामोड 644 के बाद इनिटक्टल ने स्क्रिप्ट को उठाया। एक बार फिर धन्यवाद।
FvD

1
याद रखें, your_job_name फ़ाइल के .conf समाप्ति के बिना है। पता करने के लिए मुझे एक घंटा लगा।
मार्सेल

6

जब आप कमांड चलाते हैं तो जॉब फ़ाइल सिंटैक्स के लिए सबसे प्रासंगिक संदर्भ उपलब्ध होगा:

man 5 init

आपके सिस्टम पर। उबंटू 10.04 के लिए, जैसा कि आपने पिछले उत्तर में पाया है, पिड फ़ाइल सिंटैक्स गलत है।

किसी भी समय आपको वह 'अज्ञात नौकरी' त्रुटि वापस मिल जाती है, लॉग की जांच करने के लिए एक अच्छा विचार है (पूर्व 11.04, /var/log/daemon.log, 11.04 और अधिक से अधिक सब कुछ / var / log / syslog में जाता है)

आप इस तरह एक त्रुटि देख सकते हैं:

init: /etc/init/test.conf:2: Unknown stanza

3

वैसे भी मैं यहाँ हूँ क्योंकि मैं एक ही समस्या थी, लेकिन मेरे वाक्यविन्यास 100% सही था।

कुछ डिबगिंग के बाद मैंने एक और मुद्दा खोजा जो इस "अज्ञात नौकरी" त्रुटि का कारण बन सकता है :

upstarts मॉनिटर .conf फ़ाइल में परिवर्तन और ऑटो स्थापित नौकरियों के लिए inotify का उपयोग करता है , यह बहुत अच्छा है (इसके लिए आपको upstart के साथ update.rc जैसी किसी चीज़ की आवश्यकता नहीं है!) लेकिन सही नहीं हो सकता है यदि आप (उस मामले में मेरी तरह) उपयोग करते हैं दूरस्थ सर्वर पर कॉन्फ़िगरेशन अपलोड करने और संपादित करने के लिए कुछ एफ़टीपी / एससीपी जीयूआई कार्यक्रम, जब आप उस तरीके से फ़ाइल संपादित करते हैं, तो चुपचाप अपस्टार्ट द्वारा नौकरी की स्थापना रद्द की जा सकती है।

ठीक करने के लिए बस इतना करो (कि मुझे बचाया)

touch /etc/init/*

यह सभी अपस्टार्ट कॉन्फ्स को रीफ्रेश करने के लिए इनॉटिफाई इवेंट उत्पन्न करेगा।


2

मेरे Ubuntu 14.04 डॉकटर कंटेनरों में भी यही समस्या थी। जैसा कि यह पता चला है, डॉकर के लिए उबंटू 14.04 छवि (यदि अन्य नहीं) है तो उसी तरह से अपस्टार्ट का समर्थन नहीं करता है जिसमें एक पूर्ण वर्चुअल मशीन होगी।

इस सवाल का जवाब देने के लिए, सेवा क्यों नहीं शुरू होती है, यह इसलिए है क्योंकि initctl एक वास्तविक अपस्टार्ट प्रोग्राम नहीं है: इसे मैप किया जाता है / बिन / सच।

उबंटू 14.04 डॉकर कंटेनर बनाम वैग्रांट, और बनाम एक डिजिटल ऑइनलेट पर निम्नलिखित को सत्यापित करने के लिए

$ ls -al /sbin/initctl

आप देखेंगे कि Initctl Docker बनाम अन्य में समान नहीं है।

एक लिंक जो आपकी समझ को और बढ़ा सकता है .. https://github.com/docker/docker/issues/1024


2
Docker के साथ एक ही समस्या में भाग गया: संक्षेप में और संक्षेप में, docker एक समय में केवल एक ही प्रक्रिया चलाता है, इसलिए यह upstart और कुछ और नहीं चला सकता है। यदि / जब यह मर जाता है, तो सेवा को फिर से शुरू करना सुनिश्चित करने के लिए, मैंने पर्यवेक्षक का उपयोग करके समाप्त किया। पुनश्च: आपको एक कंटेनर में कई सेवाओं को नहीं चलाना चाहिए: कंटेनरों का उपयोग करने का पूरा बिंदु सूक्ष्म सेवाओं का निर्माण करना है, इसलिए अलग-अलग कंटेनरों में टुकड़ों का निर्माण करें और उन्हें डॉकर-कम्पोज के साथ
लाएं

1
मैं सिर्फ इस लेख में भाग गया और यह बहुत अच्छी सलाह देता है कि कैसे चिंताओं को अलग किया जाए: blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker जो संभवतः भी है पर्यवेक्षक का उपयोग करने की तुलना में बेहतर रणनीति
श्रीमती 23
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.