আমার আপস্টার্ট পরিষেবাটি কেন সিস্টেম বুটে শুরু হচ্ছে না?


37

এই প্রশ্নটি অনুসরণ করে আমি আমার হেডলেস উবুন্টু সার্ভার ১১.০৪ বাক্সের জন্য একটি সহজ আপস্টার্ট পরিষেবা ( /etc/init/pms.conf ) লিখেছি :

start on filesystem and net-device-up IFACE=eth0
stop on runlevel [016]
respawn

exec /home/administrator/pms-current/PMS.sh

কমান্ড লাইন থেকে ইচ্ছামতো এই পরিষেবাটি শুরু করতে (বা থামাতে) করতে পারি:

service pms start

এবং আমি দেখতে পাচ্ছি যে এটি সত্যিই চলছে।

যাইহোক, আমি যখন প্রথম আমার মেশিনটি বুট করি তখন পরিষেবা শুরু হয় না। আমি যদি বাক্সটিতে এসএসএইচ করি এবং আমার যে পরিষেবার স্থিতি পাওয়া যায় তা পরীক্ষা করে দেখি:

$ service pms status
pms stop/waiting

আমার প্রশ্ন হচ্ছে কেন এমন হচ্ছে? আমার পরিষেবা বুট থেকে শুরু হচ্ছে না কেন?

আপডেট 1 : আমার পরিষেবা শুরু হচ্ছে এবং পরবর্তীকালে মারা যাচ্ছে বা ঠিক আদৌ শুরু হচ্ছে না কিনা তা সম্পর্কে নিশ্চিত না হয়ে আমি পিএমএস.শতে নিম্নলিখিতগুলি যুক্ত করেছি:

echo "STARTED" > $STARTLOG

এটি সম্ভবত আমাকে সন্ধান করার জন্য কিছু দেয় । আমি নিজে পরিষেবাটি শুরু করে এবং তারপরে স্টার্ট.লগ পরীক্ষা করে এটি পরীক্ষা করেছি । আমি তখন স্টার্ট.লগটি মুছলাম এবং পুনরায় বুট করলাম । এটি পুনরায় চালু করার পরে সেখানে ছিল না, সুতরাং দেখে মনে হচ্ছে আপস্টার্ট অবশ্যই আমার পরিষেবা শুরু করছে না। আমি মনে করি এটি প্রক্রিয়াটির আগের কোনও পর্যায়ে মারা যেতে পারে, তবে এটির সরলতার কারণে এটি অসম্ভব বলে মনে হচ্ছে।

আপডেট 2 : আমি সবেমাত্র 11.10 এ আপগ্রেড করেছি যা একটি আপস্টার্ট আপগ্রেড অন্তর্ভুক্ত, কিন্তু এই সমস্যা এখনও ঘটে।

আপডেট 3 : অনুরোধ হিসাবে, আমি বুট করেছি --debug/var/log/syslog | grep initপ্রশ্নটিতে বিড়ালের আউটপুটটি অনেক দীর্ঘ, তবে আপনি এটি এখানে দেখুন

আপডেট 4 : আরও লগ, এই সময় আপস্টার্ট কনফটি শীর্ষে অন্তর্ভুক্ত করা হয়েছে। চালান 1 এবং রান 2


আপনি কি নিশ্চিত যে স্ক্রিপ্টটি কার্যকর হয়নি? পিএমএস স্টপ / অপেক্ষার বার্তাটির অর্থ হল যে আপস্টার্ট কাজটি চালানো হয়েছিল এবং সমস্ত কমান্ডগুলি সাধারণত বন্ধ হয়ে যায়।
ব্যবস্থা করুন


@ আনারসি: আমার প্রশ্নে 3 আপডেট দেখুন।
কেন্ট বুগার্ট

বেশিরভাগ ব্যবহারকারী সেখানে ইমেল ঠিকানা দেবে না, বরং উবুন্টু পেস্টবিনের
সিআরান লিডেম্যান

@ অ্যানারসি: সম্পন্ন - দয়া করে আমার প্রশ্নটি দেখুন।
কেন্ট বুগার্ট

উত্তর:


19

আমি কাজের ভারবোসিটি বাড়ানোর সুপারিশ করব, যেমন প্রাক-শুরু / উত্তর-পরবর্তী এন্ট্রি ব্যবহার করে।

pre-start script
  logger "pre-start for myprog"
end script

post-start script
  logger "post-start for myprog"
end script

# and for PMS itself:
script
  logger "just before executing PMS"
  exec /home/administrator/pms-current/PMS.sh
end script

এ আরো তথ্য http://upstart.ubuntu.com/cookbook/

Http://upstart.ubuntu.com/wiki/Debugging এ একবার দেখুন


এটি সত্যিই আমার মাথা নিচ্ছে। আমি আপনার পোস্টের পিছনে এক ডজন বিভিন্ন জিনিস চেষ্টা করেছি। লগগুলিতে বিভিন্ন ধরণের অস্পষ্ট বার্তার সাথে সমস্ত ব্যর্থ হয়েছে। আমার সর্বশেষ প্রয়াসের ফলে টিআইএম: পিএমএস মূল প্রক্রিয়া (1329) 143 স্ট্যাটাসের সাথে সমাপ্ত হয়েছিল , যার অর্থ আমার কাছে কিছুই নয়। আমি দেখতে পাচ্ছি যে পিএমএস.শ এমনকি শুরু করা হয়নি কারণ এটি প্রথমে নিজের কাজটি নিজের লগে লিখতে হয় এবং লগ এন্ট্রি উপস্থিত নেই। আমি আমার প্রাক-প্রারম্ভিক আউটপুটটি দেখতে পাচ্ছি, যা আমাকে বলে যে লক্ষ্য ফাইলটি উপস্থিত রয়েছে এবং কার্যকর হয়। আমি আগামীকাল আবার এটি তুলব, তবে আপনার যদি কোনও ধারণা থাকে তবে আমি সেগুলি শুনতে পছন্দ করব। ধন্যবাদ।
কেন্ট বুগার্ট

হাই @ কেন্টবুগার্ট, আমারও মনে হচ্ছে আপনার একই সমস্যা আছে। আপনি কি সমাধান খুঁজে পেয়েছেন?
ড্যানিয়েল বি

@ কেন্টবুগার্ট আমার কি আপনার মতো সমস্যা আছে? তোমার কি ভাগ্য?
মেভিন বাবু

14

এখানে সম্ভবত যা ঘটছে তা হল আপনার নেটওয়ার্ক অ্যাডাপ্টারগুলি আসার আগে এবং সম্ভবত লুপব্যাক অ্যাডাপ্টার (লো) এর আগেই পিএমএস শুরু হয়। ধরে নিই আমরা পিএস 3 মিডিয়া সার্ভারের কথা বলছি এটি একটি নেটওয়ার্ক সার্ভিস এবং এটি সম্ভবত কোনও ইন্টারফেস উপলব্ধ না করে শুরু করা পছন্দ করে না।

আপনার মানদণ্ডের শুরুটি এখানে পরিবর্তন করার চেষ্টা করুন:

start on filesystem and net-device-up IFACE!=lo

অর্থ, কোনও "বাস্তব" নেটওয়ার্ক ইন্টারফেস শেষ হওয়ার পরে শুরু করুন। যাইহোক, এটি আদর্শ নাও হতে পারে, যদি eth0 পরবর্তী ইন্টারফেস হয়, পিএমএস শুরু হয়, তবে আপনি সত্যিই চান পিএমএস wlan0 ব্যবহার করুন, এটি হবে না। পরিষেবাটি শুরু হবে তবে আপনি যে ইন্টারফেসটি শুনতে চেয়েছিলেন তা চয়ন করতে পারে না। ধরে নিই যে আপনি যে ইন্টারফেসটি প্রবাহিত করতে চলেছেন এবং এটি পরিবর্তন হবে না, আমি এটিকে হার্ডকোডে পেশ করব, যেমন:

start on filesystem and net-device-up IFACE=wlan0

ওয়ানিরিক (১১.১০) এ, আপনি static-network-upসমস্ত স্ট্যাটিক্যালি কনফিগার করা ডিভাইসের জন্য অপেক্ষা করতে ইভেন্টটি ব্যবহার করতে পারেন । যা দুর্দান্ত কারণ এটি আপনাকে ইন্টারফেসের হার্ডকোডিং ছাড়াই নেটওয়ার্ক-নির্ভর কাজ লিখতে দেয়। [দ্রষ্টব্য: "সমস্ত স্ট্যাটিক্যালি কনফিগার করা ডিভাইস" দ্বারা, আমি /etc/network/interfacesনেটওয়ার্কম্যানেজারের পরিবর্তে ব্যবহার করার জন্য উল্লেখ করছি । এটি স্ট্যাটিক আইপি বনাম ডিএইচসিপি অর্থে স্থিতির অর্থ নয়]]


এটি কৌশলটির মতো শোনাচ্ছে তবে এটি কার্যকর হয়নি। আমি শুধু আছে loএবং eth0কিন্তু আমি আপনার দ্বিতীয় প্রস্তাবনা ব্যবহৃত: start on filesystem and net-device-up IFACE=eth0। এখনও রিবুট পরে যান না। আমি সবেমাত্র পিএমএস লগ এ লক্ষ্য করেছি যে একটি সীসা হতে পারে। আমি তদন্ত করব এবং ফিরে আসব ...
কেন্ট বুগার্ট

এটা মজার. একটি জিনিস যা আমি উল্লেখ করি নি তা হ'ল আমি আপনার মূল স্ক্রিপ্টটি চেষ্টা করেছিলাম এবং এটি আমার মেশিনের জন্য বুটে কাজ করে। আমি এটাকে কেবল অঙ্কনের ভাগ্যকেই দায়ী করেছি (যেমন আমার রেসের শর্তে, ভাল গাড়িটি জিতেছে, এবং আপনার মধ্যে খারাপ গাড়িটি জিতেছে)। আমরা এখানে অন্যান্য নির্ভরতা অনুপস্থিত কি তা সত্যিই দেখতে পাচ্ছি না। রহস্যময়।
মার্ক রাসেল

2
যেহেতু আপনি এটি বুট করার পরে শুরু করতে পারেন তাই আমাদের অবশ্যই অন্য একটি পরিষেবা নির্ভরতা অনুপস্থিত। একটি নোংরা হ্যাক যা কাজ করতে পারে (তবে আমাদের কিছুটা আলোকিত করবে না) sleep 10শেল স্ক্রিপ্টটি সম্পাদন করার আগে একটি "প্রাক-প্রারম্ভিক স্ক্রিপ্ট" এ কেবলমাত্র একটি - বা উচ্চতর - তে নামানো উচিত।
মার্ক রাসেল

দুঃখিত মার্ক - তবে আমরা একই পৃষ্ঠায় আছি। আমি প্রি-স্টার্ট স্ক্রিপ্টে ইতিমধ্যে 10 টি ঘুমের চেষ্টা করেছি। যাও না। তারপরে আমি ডিবাগ.লগ পুরোপুরি মুছতে এবং পুনরায় বুট করার চেষ্টা করেছি। বুটের পরে আমার একই পরিষেবার স্থিতি ছিল, এবং কোনও ডিবাগ.লগ ফাইল নেই, তাই আমি নিশ্চিত নই যে পিএমএস আসলেই চালানো হয়। এটি নির্ণয়ের কোন সহজ উপায় আছে? যদি আমি কিছু আউটপুট আউট করে পিএমএস.শকে পরিবর্তন করি তবে এটি কোথায় যাবে? আমি মনে করি আমি এটি সর্বদা আমার নিজের ফাইলে ডাইরেক্ট করতে পারি - এটির পরে একটি শট দিতে পারে।
কেন্ট বুগার্ট

আমি আরও তথ্যের সাথে আমার প্রশ্নটি আপডেট করেছি।
কেন্ট বুগার্ট

3

আপনার সিসলগ পরীক্ষা করে পিএমএস প্রক্রিয়াটি কোনও ত্রুটি ছাড়াই শুরু হয় তবে তার কিছুক্ষণ পরে তার লক্ষ্যটি শুরু থেকে পরিবর্তিত হয় মানে মারা যায়।

এটি কিছুটা অদ্ভুত কারণ আপনি পুনর্বার সাজনার ধারাটি যুক্ত করেছেন তাই এটি বন্ধ হওয়ার পরে আবার শুরু করার চেষ্টা করা উচিত তবে এটি কখনই হয় না। সুতরাং আমি অনুমান করছি আপনি রেসপন ক্লজটি সরিয়ে দিয়েছেন।

পিএমএস পরিষেবাটির মধ্যে কেবল 2 টি পরিষেবা শুরু এবং বন্ধ করার জন্য ufw এবং নেটওয়ার্ক-ইন্টারফেস (eth0) শুরু করা হয়, এবং 1 udev-ফ্যালব্যাক-গ্রাফিক্স শুরু হয়।

দেখে মনে হচ্ছে আপনি পিএমএস প্রক্রিয়া সমান্তরালে শুরু হচ্ছে। দুর্ভাগ্যক্রমে আপস্টার্ট ডকুমেন্টেশন start on ...ভ্যানিলা এবং start on starting ...এবং এর মধ্যে সঠিক পার্থক্য সম্পর্কে কিছুটা দুর্বল start on started ...

আপনার প্রারম্ভিক স্তবকে এতে পরিবর্তন করে দেখুন

start on started networking

বা ঠিক খুব

start on net-device-up IFACE=eth0

নেট-ডিভাইস-আপ ইভেন্টটি পরে আসার পরে লগ আউটপুটটি কিছুটা অদ্ভুত তবে পিএমএস এর আগেই শুরু হয়।

এটি নিশ্চিত করা উচিত যে সমস্ত নেটওয়ার্কিং সেট আপ শেষ হওয়ার পরে আপনার কাজটি কেবলমাত্র শুরু হবে অর্থাৎ কাজটি কেবল শুরু হয়নি তবে শেষ হয়েছে।

লগ আউটপুট পুরোপুরি বিশ্বাস করবেন না, বুট প্রক্রিয়া শুরুর দিকে কোনও ফাইলে লগ আউটপুট সবসময় কাজ করে না। উত্তরটি ডিবাগিং আপস্টার্টে দেখুন


3

পরিবর্তে রানলেভেল ব্যবহার করে অনুরূপ সমস্যা সমাধানের জন্য পরিচালিত:

start on runlevel [2345]

3

আমারও একই সমস্যা ছিল এবং শেষ পর্যন্ত আমি এটিকে সহজভাবে সমাধান করেছি :

start on runlevel [2345]

কোনও net-device-upবা started networkingস্টাফ ছাড়াই

এটি সম্পূর্ণ আপস্টার্ট স্ক্রিপ্ট, এবং এটি পুরোপুরি কাজ করে:

# MyApp

description     "MyApp"
author          "me"

start on runlevel [2345]
stop on runlevel [016]

respawn

exec /usr/bin/myapp 2>> /var/logs/myapp.log

1

আমি chkconfigআমার আরএইচসিএসএ / সিই প্রশিক্ষণের সময় পেরিয়ে এসেছি :

sudo apt-get install chkconfig
sudo chkconfig pms on

এর ক্ষমতা সম্পর্কে আরও বিশদ জানতে আপনি এটি ওয়ানিরিক ম্যান পৃষ্ঠাটি পরীক্ষা করতে পারেন ।


1

আমি এর জন্য একটি সমাধান খুঁজে পেয়েছি তবে আমি এটি বুঝতে পারি না। যদি আমি মালিক হিসাবে পিএমএসকে বাইরে থেকে /home/administratorএবং /bin/pmsমূলের মধ্যে নিয়ে যাই তবে এটি সব ঠিকঠাক কাজ করে।

যদি আমি এটির নীচে ছেড়ে চলে যাই /home/administrator/তবে নিশ্চিত হয়েছি যে /home/administrator/ডিরেক্টরিটি নিজেই নিষিদ্ধ করার জন্য প্রতিটি রুটই রুট , তবে এটি এখনও কাজ করে না।

যদি আমি প্রশাসকের সমস্ত কিছুর মালিক হিসাবে সেট করি এবং আমার স্ক্রিপ্টের প্রাসঙ্গিক অংশটি এতে পরিবর্তন করি:

sudo su administrator -c '/home/administrator/pms-current/PMS.sh'

এটি এখনও কাজ করে না।

আমি মনে করি আপাতত আমি একটি /home/root/ডিরেক্টরি তৈরি করব এবং সেখানে সবকিছু সরিয়ে নেব, যদিও আমি সত্যিই এটি পুরোপুরি বুঝতে চাই।


তাহলে chkconfigকি কাজ হয়নি? আপনি ডিরেক্টরিটি PMS.shরুট করার চেষ্টা করেছেন ? যদি কেবলমাত্র আপনার সমাধানটি কাজ করে তবে আপস্টার্টের লঞ্চপ্যাড পৃষ্ঠায় যান এবং সরাসরি ডেভসের সাথে যোগাযোগ করুন।
অক্সভিভি

এবং যদি এটি কেবল সরাতে যথেষ্ট হয় .shতবে কেবল সেখানে সবকিছু রেখে স্ক্রিপ্টটি সম্পাদনা করে সেই ডিরেক্টরিতে নির্দেশ করুন (অথবা সম্ভবত ডিরেক্টরিটি পরিবর্তন করতে পারেন?)।
অক্সভিভি

হ্যাঁ, আমি সম্পূর্ণ পিএমএস ডিরেক্টরিটি মূলের মালিকানাধীন করার চেষ্টা করেছি। সম্ভবত এটি কাজ করে না কারণ / বাড়ি / প্রশাসক / মূলের মালিকানাধীন নয়।
কেন্ট বুগার্ট

এটি কোনওভাবেই বোঝা যায় না, আমি নিয়মিত আমার / হোম ডিরেক্টরিতে স্ক্রিপ্টগুলি আপস্টার্টের মাধ্যমে সমস্যা ছাড়াই চালিত করি, অদ্ভুত।
ব্যবস্থা করুন

এমনকি অপরিচিত: আমি কেবল / হোম / রুট / এর নীচে সমস্ত কিছুই চেষ্টা করেছি যা স্পষ্টতই রুটের মালিকানাধীন। কাজ হয়নি। আমি সমস্ত কিছু আবার / বিন / পিএমএসের নীচে সরিয়ে নিয়েছি এবং এটি আবার কাজ করে। সুতরাং মনে হচ্ছে / নীচে / পিএমএস থেকে পিএমএস উপস্থাপন করার চেষ্টা করা আমার সিস্টেমে কাজ করছে না।
কেন্ট বুগার্ট

1

আমার অনুরূপ "প্রারম্ভিক" সমস্যা ছিল যখন আমি বুঝতে পারি যে আমার স্ক্রিপ্টটি আমার বাড়িতে থাকা কোনও ফাইলে নির্ভর করে এবং বাড়িটি অ্যাক্সেসযোগ্য নয় কারণ স্ট্যান্ডার্ড উবুন্টু প্রক্রিয়া (.প্রাইভেট) দ্বারা ক্রিপ্ট করা হয়েছিল।

start on local-filesystems ডিক্রিপশন প্রক্রিয়া শেষ হওয়ার আগে ইভেন্টটি সম্ভবত (সম্ভবত) নির্গত হয়।


1

আপনার হোম ডিরেক্টরি এনএফএসে আছে? কখনও কখনও রুট এনএফএস অ্যাক্সেস করতে পারে না।

রেকর্ডের জন্য, আমার সামান্য পরীক্ষায় এখনই 12.04 এ:

  • start on started networkingএবং start on network-interface-up INTERFACE=eth0 কাজ না, কিন্তু

  • start on started network-interface INTERFACE=eth0 আছে।

Http://os4.org/wiki/upstart.html কে initctl list সবসময় কাজের নেটওয়ার্কিং বন্ধ হিসাবে দেখায় বলে উল্লেখ করার জন্য ধন্যবাদ ।


লিঙ্কটি উল্লেখ করা হয়েছে broken
slm

0

আমার ক্ষেত্রে, আপস্টার্ট পরিষেবাটি ভিজাগর সিঙ্ক হওয়া ফোল্ডারে অবস্থিত স্ক্রিপ্টের উপর নির্ভর করে । নিম্নলিখিত লাইনটি ব্যবহার করে সমস্যার সমাধান:

start on vagrant-mounted

আরও তথ্য: http://razius.com/articles/launching-services- after-vagrant-mount/


0

@ Xuhcc এর অনুরূপ, আমার ভ্যাগ্র্যান্ট আপস্টার্ট স্ক্রিপ্টটি কেন চলছে না তা জানতে এখানে এসেছি। নিম্নলিখিতটি কাজ করার কথা রয়েছে:

যোজক মাউন্ট শুরু

নিম্নলিখিত বাগের কারণে কিছু বিল্ডগুলিতে নয়।

https://github.com/mitchellh/vagrant/issues/6074

প্রতিবেদনে তালিকাভুক্ত কর্মসূচিটি আমার জন্য দুর্দান্ত কাজ করেছে:

$ cat /etc/init/workaround-vagrant-bug-6074.conf 
# workaround for https://github.com/mitchellh/vagrant/issues/6074
start on filesystem
task

env MOUNTPOINT=/vagrant

script
  until mountpoint -q $MOUNTPOINT; do sleep 1; done
  /sbin/initctl emit --no-wait vagrant-mounted MOUNTPOINT=$MOUNTPOINT
end script

আমার জন্য দুর্দান্ত কাজ করেছেন


0

এটি আমার পক্ষে কাজ করেছে (আইফেস আপের পরে আমার পরিষেবা শুরু করা দরকার):

start on started networking and net-device-up IFACE=wlan1 
stop on shutdown

respawn
respawn limit 10 10
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.