সিস্টেমড ইউনিট এক্সস্টার্টটি কীভাবে ডিবাগ করা যায়


13

আমি পুরোপুরি প্রসারিত ExecStart/ExecStopকমান্ড লাইনটি প্রিন্ট করতে পারি কিনা তা জানতে আগ্রহী । নিম্নলিখিত উদাহরণ বিবেচনা করুন:

ExecStart=/usr/bin/java $OPTS_COMMON $OPTS $OPTS_LOG $OPTS_DEBUG some.class.Start --param1 ${PARAM1} --param2 ${PARAM2}

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

আমার এই ভাগ্যেভাগি করতে কোন ভাগ্যই ছিল না এবং এখনও অবধি কেবলমাত্র সম্ভাবনাটি আমি পেয়েছি /usr/bin/echoসেবার পরিবর্তে ইউনিট ফাইলটি চালনার জন্য পরিবর্তন করা। তবে তা কিছুটা ক্লান্তিকর। বা আরও বিরক্তিকর সমাধান - প্রতিটি পরিবেশের একের পর এক পরিবর্তনশীল পরীক্ষা করুন।

কীভাবে চালিত হওয়ার চেষ্টা করা হয়েছে তা আমাকে দেখাতে সিস্টেমডকে বাধ্য করার কোনও উপায় আছে?

উত্তর:


10

দুর্ভাগ্যক্রমে সেখানে কোনও বিল্ট নেই। চূড়ান্ত এক্সস্টার্টটি দেখতে আপনি ডিবাগিং চালু করতে পারেন। ফাইল সম্পাদনা /etc/systemd/system.confএবং সেট LogLevel=করার debug। তারপরে আপনি এমন কিছু দেখতে পাবেন:

java.service About to execute: /usr/bin/java $OPTS_COMMON...এটি আপনার সমস্যার সমাধান করে না তবে সিস্টেমেডের নির্দিষ্টকরণকারী প্রতিস্থাপনটি দেখতে ভাল। https://www.freedesktop.org/software/systemd/man/systemd.unit.html(specifiers)

তবে আপনি যদি সত্যিই যুক্তি প্রতিস্থাপনের নীচে যেতে চান তবে আপনাকে এখানে দেখতে হবে: https://github.com/systemd/systemd/blob/7ce9cc154576e342015eab8c1500790a9ededc01/src/core/execute.c#L2570


আমি কিছুটা ভয় পেয়েছিলাম যে এটি করার উপায় নেই। :/ যাই হোক ধন্যবাদ.
পাইস্টোল

2

বিভাগ [পরিষেবা] বিভাগে * .service ফাইলে

ExecStartPre=/bin/bash -l -c 'echo "$OPTS_COMMON">/tmp/options.debug'

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