সিস্টেমডের এক্সিকিউশন ট্রি দেখার কোনও উপায় আছে কি?


63

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


আমি সিস্টেমডের জন্য একটি ভিজ্যুয়ালাইজেশন সরঞ্জাম তৈরি করেছি। আপনি github.com/ywiyogo/systemd-visual
Yongkie

উত্তর:


71

systemd-analyzeতোমার বন্ধু. উদাহরণস্বরূপ systemd-analyze critical-chainডেমন গাছের ব্লকিং আউটপুটগুলি। আমার উদাহরণস্বরূপ:

graphical.target @20.211s
└─multi-user.target @20.211s
  └─nginx.service @19.348s +862ms
    └─network.target @19.347s
      └─NetworkManager.service @10.315s +9.031s
        └─basic.target @10.312s
          └─timers.target @10.311s
            └─systemd-tmpfiles-clean.timer @10.311s
              └─sysinit.target @10.295s
                └─systemd-update-utmp.service @10.167s +127ms
                  └─systemd-tmpfiles-setup.service @10.124s +41ms
                    └─local-fs.target @10.097s
                      └─home-entd-Downloads.mount @10.093s +2ms
                        └─home.mount @9.326s +672ms
                          └─systemd-fsck@dev-sda6.service @8.472s +696ms
                            └─dev-sda6.device @8.471s

নেটওয়ার্কম্যানেজার উদাহরণস্বরূপ পুরো বুটআপ ধারণ করে।

আপনি যদি আরও বিস্তারিত ভিউ দেখতে চান তবে আপনি কোনও এসজিজি ফাইলে পুরো এক্সিকিউশন চেইন রেন্ডার করতে পারেন। systemd-analyze plot > something.svgউচ্চ-রেজাল্ট এসভিজি ফাইলের প্রগতি বার হিসাবে পুরো চেইন (120+ মডিউল) আউটপুট করে যা রাজ্যগুলি দেখায় যেগুলি অবরুদ্ধ এবং অন্য একটি সমস্যা।

পরিশেষে আপনার কাছে এমন একটি systemd-analyze dotসরঞ্জাম রয়েছে যা ডট ফাইলকে আউটপুট দেয় যা পুরো স্তরক্রমকে আউটপুট করে: systemd-analyze dot | dot -Tpng -o stuff.png ডট সরঞ্জামের সাহায্যে আপনি এটিকে পিএস এবং এসভিজি ফাইল হিসাবে আউটপুটও করতে পারেন।

উপরের সমস্ত সরঞ্জামগুলি সিস্টেমড-বিশ্লেষণ সরঞ্জাম অন্তর্নির্মিত যা কমপক্ষে আর্চলিনাক্সে সিস্টেমডের সাথে ডিফল্টরূপে আসে। আমি মনে করি কিছু তৃতীয় পক্ষের প্রকল্প এটির সাথেও কাজ করে।


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

4
systemd-analyze plot > something.svgলক্ষ্যমাত্রা সহ কার্যকর তিনটি পূর্ণ (আপনি যা চান এটি নিকটতম)। systemd-বিশ্লেষণ ডট নির্ভরতা পূর্ণ গ্রাফ (এটি সবচেয়ে সঠিক উপস্থাপনা)। এগুলি কি আপনি চান না? প্লটে কেবল লক্ষ্য সন্ধান করুন এবং এটি কী চালানোর প্রয়োজন তা দেখুন। একই নির্ভরতা হুবহু তালিকাভুক্ত গ্রাফ, যদি এটি কিছু গ্রাফ বিশ্লেষণ টুলকিট প্রসারণ করতে পারে এবং গ্রাফ পয়েন্ট নির্বাচন করুন যার জন্য আপনি নির্ভরতা দেখতে চান (ডট সরঞ্জামটির আরও সেটিংস রয়েছে)। ম্যান পৃষ্ঠাটি দেখুন: freedesktop.org/software/systemd/man/systemd-analyze.html
আইবিআর

1
ম্যান পেজ থেকে: এটি এমন কোনও ইউনিটের সমস্ত নির্ভরতা প্লট করে যার নাম "আহি-ডেমন" দিয়ে শুরু হয়: $ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg $ eog avahi.svgএটি সমস্ত পরিচিত টার্গেট ইউনিটের মধ্যে নির্ভরতা প্লট করে:systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > targets.svg $ eog targets.svg
আইবিআর

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

1
ঠিক আছে, সমস্যা নেই. আমি কমান্ড লাইনের সরঞ্জামগুলিকে
নিজেরাই

13

এখনও আপনার প্রশ্নের পুরো উত্তর না দিতে পারে তবে --fuzzবিকল্প দিয়ে চেষ্টা করতে পারে

systemd-analyze critical-chain --fuzz 1h

দ্রষ্টব্য আপনি ইউনিট গুলি তাদের সমালোচনা-শৃঙ্খলা দেখতে নির্দিষ্ট করতে পারেন , সুতরাং আপনি মাল্টি ইউজার.অরটেজেটের মধ্যে সীমাবদ্ধ নন

systemd-analyze critical-chain network.target local-fs.target

আশাকরি এটা সাহায্য করবে


12

নিশ্চিত না যে আমি প্রশ্নটি সঠিকভাবে বুঝতে পেরেছি, তবে নীচের কমান্ডগুলির সাথে গাছের দৃশ্যায়ন উপলব্ধ:

sudo systemctl status

এবং আরো :

sudo systemctl list-dependencies 

আশাকরি এটা সাহায্য করবে :)

এছাড়াও, এটি সিস্টেমেটেল সিমলিংস ফোল্ডারগুলির একটি গাছ তৈরির জন্য অন্যান্য উদ্দেশ্যে কার্যকর হতে পারে:

tree /etc/systemd/system

systemctl disableকমান্ডটি ব্যবহার করে পরবর্তীকালে অক্ষম করার জন্য, পুরানো / বগী ইউনিটগুলি সনাক্ত করা যা সত্যই আমার সিস্টেম প্রারম্ভকে ধীর করে দিয়েছিল তা কার্যকরভাবে কার্যকর হয়েছিল ।

সম্পাদনা

এটি বলেছে যে আমি ওপির সাথে সত্যই একমত যে এই প্রাথমিক কার্যকারিতাটি কমান্ড-লাইন সরঞ্জামের মাধ্যমে দেওয়া উচিত, এবং গ্রাফিকাল সরঞ্জাম নয় ... আপনি যদি এক্স চালু করতে না পারেন তবে কী হবে? আপনি তখন কীভাবে আপনার এসভিজি ফাইলটি ব্যবহার করবেন?

আসলে, একটি উপায় আছে। আপনি যদি scpঅন্য কম্পিউটারে আপনার ফাইল আনার জন্য (ssh সরঞ্জাম) ব্যবহার করতে না পারেন তবে fbiআসলে আপনাকে সহায়তা করতে পারে :)

sudo systemd-analyze plot > /home/user/startup.svg
fbi /home/user/startup.svg

আমার টিটিওয়াইতে কাজ করেছেন। তীর দিয়ে ছবির ভিতরে কেবল নেভিগেট করুন। জুমিং বিকল্প আছে, তালিকা করতে fbi -h

আবার আমি আশা করি এটি সাহায্য করবে। এটি আর্চলিনাক্স এবং উবুন্টু দোকানে পাওয়া যায়।

সম্পাদনা 2:

fbissh উপর কাজ করে না। আপনি এইভাবে এক্স ফরওয়ার্ডিং করতে পারেন ssh -Y user@server, তবে আপনার দূরবর্তী সার্ভারে একটি এক্স সার্ভার চলমান দরকার।

এখানে সেরা বেট ব্যবহার করা হয় sshfs। এটি ইউজারস্পেসে দুর্দান্ত কাজ করে, উদাহরণস্বরূপ নটিলাস সহ। করার জন্য একটি সামান্য কনফিগারেশন আছে, দেখুন:

sudo vim /etc/fuse.conf #type a, uncomment the user_allow_other line and ESC :wq
sudo mkdir /mnt/yourmountingdir
sudo chown user:user /mnt/yourmountingdir
sshfs user@remotemachine.com:/home/user /mnt/yourmountingdir/ -o allow_other #Asks for host trusting and password
sudo fusermount -u /mnt/yourmountingdir/ #To disconnect and unmount

নির্ভরযোগ্যতা রেজোলিউশনের পরে সিস্টেমযুক্ত সমস্ত সক্রিয় ইউনিটগুলির জন্য কার্যকর করা ট্রি সম্পর্কে প্রশ্ন। সুতরাং এই উত্তর একটি মিস।
ছায়াপথ

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

আপনার সমস্যার সমাধানের জন্য সম্পাদিত। আশা করি এটি আবার সহায়তা করবে।
জোয়েল.ও

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