जवाबों:
आपके पास कुछ विकल्प हैं:
1) mysql Upstart को सूचित करें कि यह एक घटना का उत्सर्जन करके शुरू किया है
initctl emit mysql-started
" या इसी के समान।
यह initctl
करने के लिए मंगलाचरण जोड़कर नियंत्रित किया जा सकता है /etc/init.d/mysql
।
2) सामान्य SysV रनलेवल्स से mysql को डिसेबल करें और एक रैपर अपस्टार्ट जॉब बनाएं जो इसे शुरू करता है (यह रोक रोक नहीं करता है - सिर्फ एक उदाहरण):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
फिर, अपना काम करो " start on started mysql-sysv
"।
यहां समस्या यह है कि यदि कोई व्यक्ति (या कोई सिस्टम टूल स्वचालित रूप से) /etc/rc?.d
मूल /etc/init.d/mysql
सेवा स्क्रिप्ट के लिंक को फिर से जोड़ता है तो आप परेशानी में पड़ जाएंगे । इसके अलावा, आप पा सकते हैं कि mysql वास्तव में तब तक तैयार नहीं होता जब तक कुछ समय बाद मुख्य पिंड शुरू नहीं हो जाता। डेटाबेस समस्याग्रस्त हैं क्योंकि उन्हें शुरू होने के बाद भी "ऑनलाइन" आने में कुछ समय लग सकता है (ट्रांज़िशन लॉग रिप्ले, आदि)।
3) एक अपस्टार्ट जॉब ("वेटर") बनाएं जो "स्टॉप आरसी पर शुरू करें" (यानी तब शुरू करें जब सभी एसवाईएसवी जॉब्स ने समाप्त होने का दावा किया हो) और फिर पोल के इंतजार में मायस्कल तैयार होने का इंतजार करता है, फिर बाहर निकलता है। अपनी नौकरी "बंद वेटर पर शुरू करें"।
4) mysql को Upstart जॉब (सबसे अच्छा विकल्प) में बदलें। यहाँ एक अपस्टार्ट mysql कॉन्फ़िगरेशन के लिए एक प्रारंभिक बिंदु है: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
, जो चलता है , फिर अन्य सेवाओं को शुरू करते हैंstart on consul-finished
initctl emit cloud-init-finished
एक sysv सेवा को बदलने के लिए समाप्त हुआ
मेरा सुझाव है कि सभी गैर-अपस्टार्ट नौकरियों के समाप्त होने के बाद अपना काम शुरू करें :
start on started rc
/etc/init/rc.conf
वह चीज है जो अपस्टार्ट के भीतर से गैर-अपस्टार्ट नौकरियों को शुरू करती है।
प्रॉप्स: /server//a/533481
कैसे उपयोग के बारे में
pre-start exec /etc/init.d/mysql start
अपने ऊपर का काम के अंदर!