Ubuntu 12.04 पर एक init स्क्रिप्ट से एक upstart नौकरी पर निर्भर कैसे करें


10

मैं Ubuntu 12.04 LTS का उपयोग कर रहा हूं और यह प्रणाली मुख्य रूप से अपस्टार्ट जॉब्स का उपयोग करती है। दुर्भाग्य से मेरा सिस्टम मैन्युअल रूप से संकलित dbmail सर्वर पर भी निर्भर करता है, जिसमें केवल एक init स्क्रिप्ट होती है, लेकिन कोई upstart स्क्रिप्ट नहीं।

का उपयोग करते हुए update-rc.d dbmail defaultsमैं सभी रनलेवलों के लिए dbmail स्थापित है, लेकिन इससे पहले कि MySQL निर्भर है दुर्भाग्य से यह शुरू कर दिया है, इसलिए डेमॉन फिर से मर जाता है। मैंने इसे S90 या इस तरह स्थानांतरित करने की कोशिश की, फिर भी स्क्रिप्ट चलने पर MySQL उपलब्ध नहीं है।

मैंने स्क्रिप्ट के एलएसबी हेडर पर निर्भरता जोड़ने का प्रयास किया, इस प्रकार है:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          dbmail
# Required-Start:    $local_fs $remote_fs $syslog $network mysql
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbmail services
# Description:       Run network services provided by dbmail such as
#                    imap-server, pop3-server, lmtp-server, timsieve-server
### END INIT INFO

दुर्भाग्य से स्क्रिप्ट अभी भी MySQL से पहले शुरू की जा रही है। मुझे नौकरी करने के लिए नहीं, पुरानी-पुरानी इनसाइट स्क्रिप्ट्स की आदत है, इसलिए मैं यहां थोड़ा उलझन में हूं। मैं निर्भरता कैसे जोड़ सकता हूं या init स्क्रिप्ट mysqlसे पहले मुझे नौकरी कैसे मिल सकती है dbmail?

मैं बूट के दौरान जॉब + इनिट स्क्रिप्ट के लिए शुरू किए गए ऑर्डर को कैसे देख / देख सकता हूं? क्या इसके लिए कोई उपकरण है?

स्टार्टअप शुरू होने के बाद शेल से मैन्युअल रूप से स्क्रिप्ट लॉन्च करना ठीक है, क्योंकि MySQL पहले से ही चल रहा है।


एक बदसूरत काम के रूप में जो काम किया गया था, वह "स्लीप 3" को "इन्ट्री स्क्रिप्ट" के "स्टार्ट ()" फंक्शन में जोड़ रहा था। लेकिन एक साफ-सुथरा तरीका होना चाहिए, यह सिर्फ एक दौड़-हालत का दुरुपयोग है और मैं इसे उचित तरीके से ठीक करना चाहूंगा।
मार्टिन सी।

जवाबों:


12

मुझे लगता है कि अगर आप इससे भागते /etc/init.d/dbmail startहैं /etc/rc.local, तो यह आपके सभी अपस्टार्ट जॉब्स / अन्य इनइट स्क्रिप्ट के बाद शुरू होगा।

हालाँकि, मैं शायद एक नया अपस्टार्ट नौकरी जोड़कर इसे ठीक कर दूंगा /etc/init/dbmail.conf। आमतौर पर init.d स्क्रिप्ट में स्टेटस चेक करने आदि के लिए बहुत सारे कोड होते हैं, जो आपके लिए upstart हैंडल करता है। यह उतना ही सरल हो सकता है:

start on started mysql
exec /usr/local/bin/dbmail

या, आप शायद इस तरह मौजूदा init स्क्रिप्ट का उपयोग कर सकते हैं:

start on started mysql
pre-start script
  /etc/init.d/dbmail start
end script
post-stop script
  /etc/init.d/dbmail stop
end script
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.