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


12

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

শেল ইতিহাস যেমন ক্রিয়াকলাপ দেখায় না, তবে এটি export HISTCONTROL=ignorebothকোনও এসএসএইচ অধিবেশন সবে সময় শেষ হয়ে গেছে বলে কোনও পূর্ববর্তী লগিনের ব্যাশ ইতিহাসকে ডিস্কে লেখা থেকে আটকাতে পারে বলে এটি চূড়ান্ত নয় । সার্ভারটি তখন রিবুট করা হয়নি।

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

কিছু অন্যান্য পোস্ট (যেমন / সাধারণ ব্যবহারকারী সিস্টেমড পরিষেবাগুলির জন্য কোনও লগ নেই কেন? ) মনে হয় যে এখানে লগ বার্তা থাকতে হবে:

Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service...
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service.

তবে আমি আমার সিস্টেমে এ জাতীয় লগ বার্তা দেখতে পাই না।

সিস্টেমড পরিষেবাদি কখন চালু হয়েছিল, বন্ধ হয়েছিল বা পুনরায় চালু হয়েছিল সেগুলি খুঁজে পাওয়ার কোনও উপায় আছে?

সম্পাদনা : দেখে মনে হচ্ছে যে সাধারণ সমস্যাটি লোকেদের মধ্যে চালিত হতে পারে তা হ'ল তারা journalctlএকটি অননুমোদিত ব্যবহারকারী হিসাবে চালিত । এটি আমার ক্ষেত্রে নয়, আমি rootপুরো সময় হিসাবে পরিচালনা করছি । একটি মন্তব্যের জবাবে, দৌড় grep systemd /var/log/syslogআমাকে কেবল এটি দেয়:

Jun  6 09:28:35 server systemd[22057]: Starting Paths.
Jun  6 09:28:35 server systemd[22057]: Reached target Paths.
Jun  6 09:28:35 server systemd[22057]: Starting Timers.
Jun  6 09:28:35 server systemd[22057]: Reached target Timers.
Jun  6 09:28:35 server systemd[22057]: Starting Sockets.
Jun  6 09:28:35 server systemd[22057]: Reached target Sockets.
Jun  6 09:28:35 server systemd[22057]: Starting Basic System.
Jun  6 09:28:35 server systemd[22057]: Reached target Basic System.
Jun  6 09:28:35 server systemd[22057]: Starting Default.
Jun  6 09:28:35 server systemd[22057]: Reached target Default.
Jun  6 09:28:35 server systemd[22057]: Startup finished in 59ms.
Jun  6 09:37:08 server systemd[1]: Reexecuting.

"এই জাতীয় লগ বার্তা দেখছেন না" - আজব? আমার অনেক কিছু আছেgrep systemd /var/log/syslog
hschou

আমার সিস্টেমে আমি কেবল খুব জেনেরিক বার্তাগুলি দেখতে পাই Stopped target Default, যেমন Starting Shutdownইত্যাদি individual স্বতন্ত্র পরিষেবাদি সম্পর্কে কোনও কিছুই ইঙ্গিত করে না। সম্ভবত এটি একটি কনফিগারেশন সমস্যা? দ্রষ্টব্য আমি এই বিশেষ ক্ষেত্রে ডেবিয়ান জেসির সাথে আছি।
মেন্ট্রিয়ট

আপনার /etc/systemd/journald.confওভাররাইড করা হয়নি MaxLevelStoreবা MaxLevelSyslogদেখুন এবং তালিকাভুক্ত হিসাবে জার্নালযুক্ত কনফিগার করতে পারেন এমন অন্যান্য সমস্ত জায়গাগুলি দেখুন man journald.conf
meuh

ভকভগক. দুর্ভাগ্যক্রমে, অবিচ্ছিন্ন অবস্থিত সমস্ত কনফিগারেশন ফাইলগুলি /etc/systemdমূলত শূন্য রয়েছে (আপনি উল্লিখিত ফাইলগুলি সহ সমস্ত বিকল্প মন্তব্য করেছে)।
মাইন্ড্রিয়ট

উত্তর:


11

আপনার যদি এটির স্ক্রিপ্ট দরকার হয়, আপনার systemctl show কমান্ডটি ব্যবহার করা উচিত । এ থেকে যে কোনও কিছু পার্স করার চেষ্টা করার চেয়ে স্ক্রিপ্টগুলির পক্ষে এটি বেশি কার্যকর status। উদাহরণস্বরূপ, পরিষেবাটি কখন শেষ শুরু হয়েছিল তা অনুসন্ধান করতে আপনি ব্যবহার করতে পারেন:

$ systemctl show systemd-journald --property=ActiveEnterTimestamp
ActiveEnterTimestamp=Wed 2017-11-08 05:55:17 UTC

আপনি যদি সমস্ত উপলভ্য বৈশিষ্ট্য দেখতে চান তবে কেবল পতাকা বাদ দিন এবং এটি সমস্ত কিছু ফেলে দেবে।

$ systemctl show <service_name>

এই বৈশিষ্ট্যগুলির জন্য ডকুমেন্টেশন এখানে পাওয়া যাবে


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

1
যাইহোক, সম্পত্তিগুলির জন্য আরও ভাল লিঙ্কটি ডিবিএস ডকুমেন্টেশন বলে মনে হয় ।
মাইন্ড্রিওট

ধন্যবাদ @ মাইন্ড্রিয়ট যা ডক্সের জন্য আরও ভাল লিঙ্ক, আমি আমার উত্তর আপডেট করেছি।
jdf

1
@mindriot আপনার প্রথম বিন্দু সংক্রান্ত যদিও, আপনি পরীক্ষা করেছি StatusErrnoএবং Result? যদি আমি পরিষেবাটি ব্যর্থ হয় বা পুনরায় চালু করা হয় তবে যদি সেই পরিবর্তন হয় তবে আমি ভাবব। আপনার যদি সত্যিই আরও এগিয়ে যাওয়ার দরকার হয় ExecStopPostযেখানে আপনি কোনও ফাইল স্পর্শ করেন এবং শাটডাউনে একটি টাইমস্ট্যাম্প আপডেট করেন। এটি আপনাকে নিঃশব্দ পুনঃসূচনা এবং উদ্দেশ্যমূলকগুলির মধ্যে পার্থক্য করতে সহায়তা করবে।
jdf

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

3

ডেবিয়ানে ডিফল্ট কনফিগারেশন সহ, একটি অনিবদ্ধ ব্যবহারকারীর সিস্টেমড-জার্নাল্ড, না সিসলগ লগের অ্যাক্সেস থাকবে। সাধারণ ব্যবহারকারী হিসাবে লগ ইন করা থাকলে আপনি জার্নালটিএল থেকে এই প্রতিক্রিয়াটি পাবেন:

$ journalctl 
No journal files were found.

যা কিছুটা বিভ্রান্তিকর।

আপনি যদি রুট হিসাবে লগ ইন করেন journalctl --unit=yourserviceতবে আপনার সন্ধান করা তথ্য আপনাকে দেওয়া উচিত। systemctl restart bind9আমার সার্ভারে একটি করার পরে , আমি এটি পরে পেয়েছি journalctl --unit=bind9:

Jun 03 18:20:24 ns systemd[1]: Stopping BIND Domain Name Server...
Jun 03 18:20:24 ns named[27605]: received control channel command 'stop'
Jun 03 18:20:24 ns systemd[1]: Starting BIND Domain Name Server...
Jun 03 18:20:24 ns systemd[1]: Started BIND Domain Name Server.

যদি আমি বাইন্ড 9কে স্পষ্টভাবে মেরে ফেলি kill -9, journalctl --unit=bind9দেয়:

Jun 03 18:46:25 ns systemd[1]: bind9.service: main process exited, code=killed, status=9/KILL
Jun 03 18:46:25 ns rndc[28028]: rndc: connect failed: 127.0.0.1#953: connection refused
Jun 03 18:46:25 ns systemd[1]: bind9.service: control process exited, code=exited status=1
Jun 03 18:46:25 ns systemd[1]: Unit bind9.service entered failed state.
Jun 03 18:46:25 ns systemd[1]: bind9.service holdoff time over, scheduling restart.
Jun 03 18:46:25 ns systemd[1]: Stopping BIND Domain Name Server...
Jun 03 18:46:25 ns systemd[1]: Starting BIND Domain Name Server...
Jun 03 18:46:25 ns systemd[1]: Started BIND Domain Name Server.

প্রথম লাইনটি ইঙ্গিত করে যে প্রক্রিয়াটি মারা গিয়েছিল কারণ এটি মারা গিয়েছিল।

সিস্টেমড-জার্নাল্ড সমস্ত লগ বার্তাগুলি সিসলগে ফরোয়ার্ড করে, সুতরাং আপনার এই বার্তাগুলিতেও খুঁজে পাওয়া উচিত /var/log/syslog

সিস্টেমড এবং সিস্টেমড-জার্নাল্ডের কনফিগারেশনে একটি ডিফল্ট সংকলন রয়েছে যা /etc/systemd/system.confএবং এর মধ্যে পরিবর্তন করা যেতে পারে /etc/systemd/journald.conf

এটা জানা যে ডিফল্ট অনুসারে অধীন দোকানে-journald systemd লগ দরকারী হতে পারে /run, যা tmpfsএবং সেই কারণেই পুনরায় বুট করার পরে দেখা যাবে না। এর অর্থ হ'ল শেষ বুটের চেয়ে লগ বার্তাগুলি পুরানো পেতে আপনাকে সিসলগ ফাইলগুলি দেখতে হবে। এই ক্ষেত্রে জার্নাল্টেল আপনাকে সর্বশেষ বুটের চেয়ে লগগুলি দেয় না। এটি /etc/systemd/journald.confসেট করে পরিবর্তন করা যেতে পারে Storage=persistent

ম্যানুয়াল পৃষ্ঠাগুলি যা এটি নথি করে:

man 8 systemd-journald
man 5 journald.conf
man 5 systemd-system.conf
man 5 systemd-user.conf

এছাড়াও মনে রাখবেন যে সিস্টেমটি দ্বারা কোনও পরিষেবা স্বয়ংক্রিয়ভাবে পুনরায় চালু হওয়ার জন্য, এটি অবশ্যই এটির .serviceফাইলে কনফিগার করা উচিত । থেকে man 5 systemd.service:

   Restart=
       Configures whether the service shall be
       restarted when the service process exits, is
       killed, or a timeout is reached. The service
       process may be the main service process, but it
       may also be one of the processes specified with
       ExecStartPre=, ExecStartPost=, ExecStop=,
       ExecStopPost=, or ExecReload=. When the death
       of the process is a result of systemd operation
       (e.g. service stop or restart), the service
       will not be restarted. Timeouts include missing
       the watchdog "keep-alive ping" deadline and a
       service start, reload, and stop operation
       timeouts.

       Takes one of no, on-success, on-failure,
       on-abnormal, on-watchdog, on-abort, or always.
       If set to no (the default), the service will
       not be restarted.

বিস্তৃত এবং ভাল-লিখিত পোস্টের জন্য আপনাকে ধন্যবাদ যা সম্ভবত বেশিরভাগ ব্যবহারকারীর জন্য সমস্যাটি সমাধান করে । দুর্ভাগ্যক্রমে, আমার ক্ষেত্রে আমি জার্নালটি আউটপুট দেওয়ার সময় উল্লিখিত কোনও লগ লাইন দেখতে পাচ্ছি না systemdযতক্ষণ না আপনি পুরো সময়টাই রুট হিসাবে কাজ করেছেন। /var/log/syslogকিছু না দেখায় না। এটি পদ্ধতিতে 215 পদ্ধতিতে রয়েছে।
মাইন্ড্রিয়ট

3

আপনি শেষবার আপনার পরিষেবাটি শুরু বা পুনঃসূচনা দেখতে পারবেন। ব্যবহার করুন service chatty statusবা systemctl status chatty। এখানে অ্যাপাচি 2 বা httpd পরিষেবার উদাহরণ রয়েছে:

# service apache2 status
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2)
  Drop-In: /lib/systemd/system/apache2.service.d
       └─forking.conf
   Active: active (running) since ven. 2017-06-02 15:53:01 CEST; 21min ago
  Process: 14773 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 22912 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
  Process: 14880 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/apache2.service

Active: active (running) since Wen. 2017-06-02 15:53:01 CEST; 21min agoসার্ভিসটি কীভাবে চলছে তা লাইন প্রদর্শন করে তবে আপনি যা খুঁজছেন ঠিক তেমন কোনও 'তালিকার মতো' প্রদর্শন করতে পারবেন কিনা তা আমি জানি না।

# systemctl status httpd

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2019-10-11 00:35:58 EEST; 1 weeks 3 days ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 29728 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
 Main PID: 10722 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   Memory: 8.7M

1
serviceএকটি পুরানো আপস্টার্ট কমান্ড যা সামঞ্জস্যের জন্য systemd এর সাথে কাজ করে। নেটিভ systemdকমান্ড হল systemctl status apache2
মার্ক স্টোসবার্গ

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

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