আমি কীভাবে একটি আপস্টার্ট কাজটি ডিবাগ করব?


10

আমার এখানে নিম্নলিখিত কাজ রয়েছে /etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

আমি যখন কাজটি শুরু করি তখন sudo service collector startএটি স্তব্ধ হয়ে যায়। আমি ctrl-cএবং দৌড়ালে initctl list, আমি এটি দেখতে:

collector start/killed, process 616

আমি twistdপিএসে ডেমনটির কোনও উদাহরণ দেখতে পাচ্ছি না এবং যে HTTP সার্ভারটি এটি সরবরাহ করবে বলে মনে করা হচ্ছে তা বিদ্যমান নেই।

এমনকি আমি 'প্রত্যাশিত ডেমন' ছাড়াই এবং একটি scriptস্তরের সাহায্যে এক-লাইন বাশ স্ক্রিপ্টে সাধারণ কল দিয়ে এটি চেষ্টা করেছি এবং এটি এখনও কার্যকর হয় না। আমি মনে করি আমি খুব ভুল কিছু করছি। এটা কী হতে পারতো?


কোনও উত্তর নেই, তবে আমি একই ধরণের সমস্যার সাথে লড়াই করছি। এটি আপস্টার্টে একটি বাগও হতে পারে: bugs.launchpad.net/ubuntu/+source/upstart/+bug/438313 আমি জানি না যে এই ঝুলন্ত অবস্থা থেকে কীভাবে পেতে হবে অন্যটি পুনরায় চালু করার পরে। এছাড়াও আমি বিশ্বাস করি এটি expect daemonলাইনটির সাথে করা উচিত।
ক্ষতি

উত্তর:


14

আপনি পুনঃনির্দেশ করতে পারেন stdoutএবং stderrপুরো শেলটি scriptপ্রাগমা (পরিবর্তে exec) ব্যবহার করে এর মতো করে ব্যবহার করতে exec >FILE 2>&1পারেন:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

এটি আশাবাদী যা ঘটছে সে সম্পর্কে আপনাকে আরও ভাল অন্তর্দৃষ্টি দেওয়া উচিত। আমার প্রারম্ভিক স্ক্রিপ্টগুলিতে সমস্ত ধরণের সমস্যা ধরার জন্য আমি এই দরকারীটি পেয়েছি। আপনি পারা নল আপনার কমান্ড এর stdout/ stderrসরাসরি, কিন্তু আপনি আউট শেল (সিনট্যাক্স ত্রুটি মত) ত্রুটি উদ্ভব মিস করব।

অন্যদিকে, যদি serviceঝুলন্ত থাকে তবে এটি সম্ভবত আপনার স্ক্রিপ্টটিকেও আঘাত করছে না , সেক্ষেত্রে অবশ্যই এর কোনওটিই সহায়তা করবে না।


ধন্যবাদ, এটি আমাকে সঠিক পথে ফেলেছে। শেষ পর্যন্ত আমি আউটপুটটি পাইপ করলাম logger, যাতে আমি কেবল লেজ করতে পারি /var/log/syslog
Cera

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

আপনি এই কোডটি কোথায় রাখবেন?
কেভ

2

এখানে console logবর্ণনামূলক যেমন আছে এখানে সংজ্ঞায়িতও আছে: http://upstart.ubuntu.com/cookbook/#console-log

এটি ডিফল্টরূপে সক্ষম হয়েছে কিনা তা জানার জন্য আমি আপস্টার্ট সম্পর্কে পর্যাপ্ত পরিমাণে জানি না, তবে আপনি এটি প্রতি আপস্টার্ট কাজের ভিত্তিতে সক্ষম করতে পারবেন, এটি ডিফল্ট আউটপুট থেকে /var/log/upstart/<job>.log


0

আপস্টার্ট ডিরেক্টর উপস্থিত রয়েছে যাচাই করুন এবং স্ক্রিপ্ট পর্বের আগে কনসোল লগ যুক্ত করুন। (আপস্টার্ট সংস্করণে উপরের তারপর 1.4 এটি ডিফল্ট)

কনসোল লগ

স্ক্রিপ্ট এক্সিকিউট> / পথ / থেকে / কিছু_ লগ_ফায়াল 2> & 1 সম্পাদন করুন আপনার_কম্যান্ড_ এখানে শেষ স্ক্রিপ্ট

আরও তথ্যের জন্য থ্রেড চেক করুন: /ubuntu/207143/how-to-diagnose-upstart-erferences/932155#932155

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