دلیل ریستارت لینوکس



گاهی ممکن هست اتفاق بیافته که سیستم عامل لینوکس یا (خرید سرور مجازی لینوکس) به صورت برنامه ریزی نشده یا به دلایل مشخصی ریستارت شده است. یافتن و حل علت اصلی می تواند به جلوگیری از تکرار چنین مسائلی کمک کرده و از خرابی برنامه ریزی نشده جلوگیری کند. روش های مختلفی وجود دارد که ما می توانیم بفهمیم چه چیزی باعث راه اندازی مجدد سیستم شده است. در این مقاله، ما در مورد این روش ها و نحوه استفاده از برنامه های موجود و ورود به سیستم در سیستم عامل Linux برای عیب یابی این سناریوها بحث خواهیم کرد.

دلیل ریستارت لینوکس

زمان راه اندازی مجدد لینوکس را بررسی کنید
شما می توانید زمان بررسی مجدد سیستم را با دستورات who و last بررسی کنید

who -b
system boot 2021-02-13 20:51
last -x | head | tac
abhishek pts/0 192.168.1.16 Sat Feb 13 19:53 - 19:55 (00:02)
reboot system boot 3.10.0-1160.11.1 Sat Feb 13 19:55 - 20:54 (00:58)
runlevel (to lvl 3) 3.10.0-1160.11.1 Sat Feb 13 19:55 - 20:04 (00:08)
abhishek pts/0 192.168.1.16 Sat Feb 13 19:56 - 20:04 (00:07)
reboot system boot 3.10.0-1160.11.1 Sat Feb 13 20:04 - 20:54 (00:49)
runlevel (to lvl 3) 3.10.0-1160.11.1 Sat Feb 13 20:04 - 20:51 (00:46)
abhishek pts/0 192.168.1.16 Sat Feb 13 20:04 - 20:50 (00:46)
reboot system boot 3.10.0-1160.11.1 Sat Feb 13 20:51 - 20:54 (00:03)
runlevel (to lvl 3) 3.10.0-1160.11.1 Sat Feb 13 20:51 - 20:54 (00:02)
abhishek pts/0 192.168.1.16 Sat Feb 13 20:51 still logged in

 

پیام های سیستم را بررسی کنید

می توانید پیام های سیستم را که برای راه اندازی مجدد ثبت شده هست مشاهده کنید، برای سیستم های CentOS / RHEL ، گزارش ها را در /var/log/messages پیدا خواهید کرد و برای سیستم های اوبونتو / دبیان ، آن در /var/log/syslog این پیام ها موجود است ( به راحتی می توانید از دستور tail  یا ویرایشگر متن مورد علاقه خود برای فیلتر کردن یا یافتن داده های خاص استفاده کنید. )

همانطور که از گزارش های زیر مشخص است، چنین ورودی هایی نشان دهنده خاموش کردن / راه اندازی مجدد سیستم است که توسط یک مدیر یا کاربر root انجام شده است. این پیام ها بسته به نوع سیستم عامل و نحوه راه اندازی مجدد / خاموش شدن متغیر است ، اما شما همیشه با مشاهده لاگ های مربوط به سیستم اطلاعات مفیدی پیدا خواهید کرد، هرچند ممکن است به اندازه کافی واضح نباشد.

Feb 13 19:56:20 centos7vm chronyd[637]: Source 72.30.35.89 replaced with 142.147.92.5
Feb 13 20:00:40 centos7vm chronyd[637]: Selected source 162.159.200.123
Feb 13 20:01:01 centos7vm systemd: Created slice User Slice of root.
Feb 13 20:01:01 centos7vm systemd: Started Session 2 of user root.
Feb 13 20:04:09 centos7vm systemd-logind: System is powering down.
Feb 13 20:04:09 centos7vm systemd: Closed LVM2 poll daemon socket.
Feb 13 20:04:09 centos7vm systemd: Stopped target Multi-User System.

 

یکی از این دستوراتی که می توانید برای فیلتر کردن گزارش های سیستم استفاده کنید ، در زیر آورده شده است:

sudo grep -iv ': starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel' \
  /var/log/messages /var/log/syslog /var/log/apcupsd* \
  | grep -iw 'recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups'

اتفاقات ثبت شده ممکن است همیشه خاص نباشند. همیشه اتفاقای را که نشانه هایی از هشدارها یا خطاهایی است که منجر به خاموش شدن / خراب شدن سیستم می شود بررسی کنید.

 

گزارش های auditd بررسی کنید

برای سیستم های دارای auditd، مکانی عالی برای بررسی رویدادهای مختلف با استفاده از ابزار ausearch است. برای بررسی دو ورودی آخر از گزارش های auditd از دستور زیر استفاده کنید.

sudo ausearch -i -m system_boot,system_shutdown | tail -4

با بررسی دستور بالا، دو اتفاق خاموش کردن یا راه اندازی مجدد اخیر گزارش می شود. اگر یک SYSTEM_SHUTDOWN و به دنبال آن SYSTEM_BOOT را گزارش کند، همه چیز باید خوب باشد. اما، اگر دو خط SYSTEM_BOOT را پشت سر هم گزارش کند یا فقط یک خط SYSTEM_BOOT را گزارش کند، به احتمال زیاد سیستم به درستی خاموش نمی شود. یک خروجی نرمال و درست باید چیزی مانند زیر باشد:

sudo ausearch -i -m system_boot,system_shutdown | tail -4
----
type=SYSTEM_SHUTDOWN msg=audit(Saturday 13 February 2021 A.852:8) : pid=621 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success'
----
type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.368:8) : pid=622 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success'

خروجی زیر دو پیام SYSTEM_BOOT متوالی را لیست می کند، که ممکن است نشانگر خاموش شدن غیرطبیعی باشد، ولی باید لاگ های سیستم هم بررسی شود.

sudo ausearch -i -m system_boot,system_shutdown | tail -4
----
type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.852:8) : pid=621 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success'
----
type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.368:8) : pid=622 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success'

 

تحلیل systemd journal

شما باید یک systemd-journal پایدار برای نگهداری از لاگ ها در هارد داشته باشید، در غیر اینصورت لاگ های مربوط به راه اندازی مجدد ادامه نمی یابد. برای این منظور، می توانید تغییرات را در /etc/systemd/journald.conf ایجاد کنید، یا با دستورات زیر دایرکتوری خود را ایجاد کنید:

sudo mkdir /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal 2>/dev/null
sudo systemctl -s SIGUSR1 kill systemd-journald

پس از اتمام کار، می توانید سیستم را به صورت اختیاری مجدد راه اندازی کنید، در این حالت با انجام دستورات بالا لاگ های بیشتری از قبل که فقط یک لاگ ثبت میشد، در این فایل ثبت خواهد شد.

 

از دستور زیر برای لیست بوت های ثبت شده از journal استفاده کنید:

 journalctl --list-boots

خروجی زیر رو به شما میده :

journalctl --list-boots
-15 8a7c8034da804ebb9cb063a7553ed0bf Wed 2020-11-18 23:09:05 IST—Wed 2020-11-18 23:17:10 IST
-14 7bbb9542778a4057a91b9d22fcf91735 Wed 2020-11-18 23:17:22 IST—Wed 2020-11-18 23:20:08 IST
-13 f2ee8a61bf4c4f67a12e012855d8b1c3 Wed 2020-11-18 23:20:17 IST—Wed 2020-11-18 23:23:01 IST
-12 1277d19a959f4c33ba944a68c5874d2a Fri 2020-12-11 10:32:44 IST—Fri 2020-12-11 10:43:39 IST
-11 eb4ff97f112445888a5946d1155de1b8 Fri 2020-12-11 10:43:55 IST—Fri 2020-12-11 10:48:18 IST
-10 bf46eff3f9a344d2b28a03ffbf7fff32 Fri 2020-12-11 19:04:30 IST—Fri 2020-12-11 19:31:01 IST
 -9 2acf08368667423c89086579f98efd82 Tue 2020-12-15 17:36:52 IST—Tue 2020-12-15 19:13:10 IST
 -8 b826f223a67d454b94d4413678870f08 Sat 2020-12-19 00:31:54 IST—Sat 2020-12-19 00:44:52 IST
 -7 011e1b29339041b0ae48bbb93fce792f Wed 2020-12-23 23:01:15 IST—Wed 2020-12-23 23:02:44 IST
 -6 f41f5880572e4394938c6dcb4a8b683c Mon 2020-12-28 16:54:11 IST—Mon 2020-12-28 22:54:22 IST
 -5 a2e638dc292a4db2b0a50dd442129c28 Tue 2020-12-29 17:02:16 IST—Tue 2020-12-29 19:39:38 IST
 -4 f6c738df872a48d48daee1962727cca5 Wed 2020-12-30 19:09:30 IST—Wed 2020-12-30 19:20:23 IST
 -3 c876e60ea371460b94e247b40270b18f Thu 2020-12-31 14:36:07 IST—Thu 2020-12-31 15:45:36 IST
 -2 a23c70804ec243f7868c18737f4b7e55 Sat 2021-02-13 20:09:30 IST—Sat 2021-02-13 20:10:44 IST
 -1 94b604a6bf75462dac8c4a4576fdc863 Sat 2021-02-13 20:10:59 IST—Sat 2021-02-13 20:23:18 IST
  0 3ff7e29fa0a34878b7574b7d4d3ccfb5 Sat 2021-02-13 20:24:57 IST—Sat 2021-02-13 21:13:15 IST

 

همونطور که میبینین چندین راه اندازی مجددی که ار سیستم عامل انجام شده براتون لیست شده، برای تحلیل بیشتر هم از دستور زیر میتونین استفاده کنین

journalctl -b {num} -n

 

در اینجا {num} مقدار index داده شده در دستور journalctl --list-boots در ستون اول خواهد بود.

journalctl -b -1 -n
-- Logs begin at Wed 2020-11-18 23:09:05 IST, end at Sat 2021-02-13 21:13:39 IST. --
Feb 13 20:23:18 ubuntumate20vm systemd[1]: lvm2-monitor.service: Succeeded.
Feb 13 20:23:18 ubuntumate20vm systemd[1]: Stopped Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling.
Feb 13 20:23:18 ubuntumate20vm systemd[1]: Reached target Shutdown.
Feb 13 20:23:18 ubuntumate20vm systemd[1]: Reached target Final Step.
Feb 13 20:23:18 ubuntumate20vm systemd[1]: systemd-poweroff.service: Succeeded.
Feb 13 20:23:18 ubuntumate20vm systemd[1]: Finished Power-Off.
Feb 13 20:23:18 ubuntumate20vm systemd[1]: Reached target Power-Off.
Feb 13 20:23:18 ubuntumate20vm systemd[1]: Shutting down.
Feb 13 20:23:18 ubuntumate20vm systemd-shutdown[1]: Syncing filesystems and block devices.
Feb 13 20:23:18 ubuntumate20vm systemd-journald[304]: Journal stopped

همونطور که مشاهده میکنین، پیام های وارد شده در journal را در خروجی فوق میتونین مشاهده کنین و در صورت وجود علمکردهای ناموفق سیستم عامل، علت را پیدا کنید.