Yanıtlar:
Yalnızca kök ayrıcalıklı programlar bir sistemi dikkatlice kapatabilir. Yani bir sistem normal bir şekilde kapandığında, ya kök ayrıcalıklarına sahip bir kullanıcı ya da bir acpi betiğidir. Her iki durumda da günlükleri kontrol ederek öğrenebilirsiniz. Bir acpi kapanması, güç düğmesine basılması, aşırı ısınması veya düşük pil (dizüstü bilgisayar) nedeniyle olabilir. Üçüncü sebebi, UPS'in güç kaynağı arızalandığında, ki bu da yine bir uyarı göndermesini unuttum.
Geçenlerde, nezaketsizce kapanmaya başlayan, aşırı ısındığı ve mobo'nun daha erken kapanması için yapılandırıldığı ortaya çıktı. Sistemin tomruklardan tasarruf etme şansı yoktu, ancak neyse ki sistemin sıcaklığını izlemek, gücü kapatmadan hemen önce artmaya başladığını gösterdi.
Bu yüzden eğer normal bir kapanma ise günlüğe kaydedilir, eğer izinsiz bir girişse ... iyi şanslar, ve eğer soğuk bir kapanma ise bilmek için en iyi şans, ortamını kontrol etmek ve izlemek.
Aşağıdaki komutları deneyin:
Son yeniden başlatma girişlerinin listesini görüntüle:
last reboot | less
Son kapatma girişlerinin listesini görüntüle:
last -x | less
veya daha doğrusu:
last -x | grep shutdown | less
Ancak kimin yaptığını bilemezsin. Kimin yaptığını bilmek istiyorsanız, biraz kod eklemeniz gerekecek, yani bir dahaki sefere bileceksiniz.
Bu kaynağı çevrimiçi olarak buldum. Sizin için yararlı olabilir:
Sistemimi kimin veya neyin durdurduğunu nasıl öğrenebilirim?
last -x shutdown
Kontrol edilmesi gereken birkaç şey var:
Bu komutu * çalıştırın ve çıktıyı aşağıdaki örneklerle karşılaştırın:
last -x | head | tac
Normal bir kapatma ve çalıştırma şöyle görünür (bir kapatma olayına ve daha sonra bir sistem önyükleme olayına sahip olduğunuzu unutmayın):
runlevel (to lvl 0) 2.6.32- Sat Mar 17 08:48 - 08:51 (00:02)
shutdown system down ... <-- first the system shuts down
reboot system boot ... <-- afterwards the system boots
runlevel (to lvl 3)
Bazı durumlarda bunu görebilirsiniz (kapatma hakkında bir çizgi olmadığını ancak sistemin "durma durumu" olan çalışma seviyesi 0'da olduğunu unutmayın):
runlevel (to lvl 0) ... <-- first the system shuts down (init level 0)
reboot system boot ... <-- afterwards the system boots
runlevel (to lvl 2) 2.6.24-... Fri Aug 10 15:58 - 15:32 (2+23:34)
Elektrik kesintisinden beklenmeyen bir kapanma şöyle gözüküyor (önceden sistem kapatma olayı olmadan bir sistem önyükleme etkinliğiniz olduğunu unutmayın):
runlevel (to lvl 3) ... <-- the system was running since this momemnt
reboot system boot ... <-- then we've a boot WITHOUT a prior shutdown
runlevel (to lvl 3) 3.10.0-693.21.1. Sun Jun 17 15:40 - 09:51 (18:11)
En ilginç günlük mesajlarını filtrelemek için bir bash komutu şudur:
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'
Beklenmeyen bir kapanma veya donanım arızası meydana geldiğinde, dosya sistemleri düzgün bir şekilde kaldırılmayacaktır, bu nedenle bir sonraki önyüklemede aşağıdaki gibi günlükler alabilirsiniz:
EXT4-fs ... INFO: recovery required ...
Starting XFS recovery filesystem ...
systemd-fsck: ... recovering journal
systemd-journald: File /var/log/journal/.../system.journal corrupted or uncleanly shut down, renaming and replacing.
Kullanıcı güç düğmesine bastığından sistem kapandığında, şöyle bir günlük aldın:
systemd-logind: Power key pressed.
systemd-logind: Powering Off...
systemd-logind: System is powering down.
Yalnızca sistem düzenli bir şekilde kapandığında böyle bir günlük alabilirsiniz:
rsyslogd: ... exiting on signal 15
Sistem aşırı ısınmadan dolayı kapandığında aşağıdaki gibi günlükler elde edersiniz:
critical temperature reached...,shutting down
Bir UPS'niz varsa ve gücü ve kapanmayı izlemek için bir arka plan programı kullanıyorsanız, günlüklerini açıkça kontrol etmelisiniz (NUT / var / log / mesajları açar ancak apcupsd / var / log / apcupsd'da oturum açar)
notlar
*: İşte last
man sayfasından açıklaması :
last [...] prints information about connect times of users.
Records are printed from most recent to least recent.
[...]
The special users reboot and shutdown log in when the system reboots
or (surprise) shuts down.
Biz kullanmak head
son 10 etkinliği tutmak ve kullandığımız tac
biz aslında o son baskılar En son gelen en son olay ile karışık kalmamak sipariş ters çevirmek için.
tac
emir olmadan yeniden yapılmaktan faydalanabilirdi
Keşfedilecek bazı günlük dosyaları: (bir Ubuntu sistemi bulundu, ancak umarım çoğu Linux / Unix sistemlerinde bulunurlardı)
/var/log/debug
/var/log/syslog (will be pretty full and may be harder to browse)
/var/log/user.log
/var/log/kern.log
/var/log/boot
Yine, bu günlük dosyaları bir Ubuntu sisteminde bulunur, bu nedenle dosya adları farklı olabilir. tail
Komut senin arkadaşın.
Kullanarak basitleştirme last
sistem kapatma girişlerini ve çalışma seviyesi değişikliklerini ve filtreleme gösteren shutdown
ve reboot
:
last -x shutdown reboot
cat foo | grep bar
vs grep bar foo
, en sonunda, kendini filtreleyebiliyor gibi görünüyor.
Benzer bir Debian 7.8'e de ihtiyacım vardı ve temelde logda net ve açık bir mesaj olmadığını gördüm; bu biraz şaşırtıcı.
Grep /var/log
, makinenin kapatıldığı süreyi söylerdi, uygun nedenlerin kapandığını vb. Gösterir, ancak ilk nedeni değil.
shutdown[25861]: shutting down for system halt
Bahsedilen diğer çözümler ( last -x
) çok yardımcı olmadı.
Aşağıdakileri /etc/acpi/powerbtn-acpi-support.sh
içeren okuma :
if [-x /etc/acpi/powerbtn.sh]; sonra # Acpid paketinden eski config betiği ile uyumluluk /etc/acpi/powerbtn.sh elif [-x /etc/acpi/powerbtn.sh.dpkg-bak]; sonra # Acpid paketinden eski config betiği ile uyumluluk # hala ortalıkta çünkü yönetici tarafından değiştirildi /etc/acpi/powerbtn.sh.dpkg-bak Başka # Normal kullanım. / sbin / shutdown -h -P şimdi "Güç düğmesine basıldı" fi
Açık bir metnin shutdown
komutun parametresi olarak verildiğine dikkat edin . Bu dizginin kapatma programı tarafından otomatik olarak kaydedilmesini beklerdim.
Neyse, açık bir mesaj almak için yeni oluşturulan bir /etc/acpi/powerbtn.sh
çalıştırılabilir dosyaya aşağıdaki metni (root olarak) koydum.chmod a+x /etc/acpi/powerbtn.sh
#! / Bin / sh /etc/acpi/powerbtn.sh dosyasındaki logger, muhtemelen "Güç düğmesine basıldı" / sbin / shutdown -h -P şimdi "Güç düğmesine basıldı"
Bu şekilde yapmak muhtemelen modifiye etmekten daha uzun süreli bir değişiklik yapacaktır /etc/acpi/powerbtn-acpi-support.sh
. İkinci seçenek muhtemelen bir sonraki paket yükseltme işleminde etkisini kaybedecektir acpi-support-base
.
Ubuntu 14.04'ten farklı olarak farklı yapar ( /etc/acpi/powerbtn.sh
zaten acpid
paketten farklı içeriğe sahip ). Ayrıca, Debian 8 muhtemelen farklı yapar. Çeşitleri sunmaktan çekinmeyin.
Güç düğmesine basıldığında Ve şimdi, aşağıdaki gibi bir çizgi görünür /var/log/messages
, /var/log/syslog
ve /var/log/user.log
:
logger: in /etc/acpi/powerbtn.sh, presumably Power button pressed
Şimdi bu kayıt defterinde açık bir mesaj.
acpi-support-base
ve acpid
paketleri düşünmeyi önerdiğiniz için @Bielecki'ye teşekkürler . Kendimi test etmedim. Hangi dağıtım ve sürüm için fayda sağladığını detaylandırabilir misiniz?
Sakar bir fikrim var, ama belki de sizin için işe yarar: komuta girin last
ve tüm kullanıcıların oturum açma bilgilerini kontrol edin. daha sonra, halt
o anda oturum açmış olan kullanıcılara izin vermeleri için gerekli filtreleri kullanın . sonra .bash_history
durup durmadıklarını görmek için dosyalarına bakın.
Sadece KVM VM'mi çipleyin (burada bir ev sahibinin yeniden başlatılmasının misafirlerin temiz bir şekilde kapatılıp kapatılmadığını merak ettim), ihtiyacım olanı buldum /var/log/auth.log
( last -x shutdown
aynı şeyi göstermenin yanı sıra ). İşte bu çizgiler geldi:
Sep 3 23:56:31 Web systemd-logind[531]: Power key pressed.
Sep 3 23:56:31 Web systemd-logind[531]: Powering Off...
Sep 3 23:56:31 Web systemd-logind[531]: System is powering down.
Sep 3 23:55:45 Web systemd-logind[591]: New seat seat0.
Sep 3 23:55:45 Web systemd-logind[591]: Watching system buttons on /dev/input/event0 (Power Button)
Sep 3 23:55:54 Web sshd[805]: Server listening on 0.0.0.0 port 22.
Sep 3 23:55:54 Web sshd[805]: Server listening on :: port 22.
last -x
bu satırları gösterir, en son ilk sıraya göre yazdırıldıklarına dikkat edin (ör. önce son satırı okuyun ve sonra yukarı gidin), ancak saatin sıfırlanmasından (önyüklemeden önce 23:56, 23:55 sonra) önceki satırlarda da belirgin olarak, sipariş biraz şaşırtıcı görünüyor:
runlevel (to lvl 2) 3.13.0-129-gener Sun Sep 3 23:55 - 22:04 (22:08)
reboot system boot 3.13.0-129-gener Sun Sep 3 23:55 - 22:04 (22:08)
shutdown system down 3.13.0-123-gener Sun Sep 3 23:56 - 23:55 (00:00)
runlevel (to lvl 0) 3.13.0-123-gener Sun Sep 3 23:56 - 23:56 (00:00)
Benim açımdan, konukların bilgisayar önyüklendiğinde kapanıp kapanmadığını kontrol etmek için, konuklardan birine giriş yapabilirim (ssh) ve ana bilgisayarı başlattığımda orada kalarak terminalde şu satırları alabilirim:
root@Web:~#
Broadcast message from root@Web
(unknown) at 22:25 ...
The system is going down for power off NOW!
Connection to web closed by remote host.
Connection to web closed.
betiğe kapatma komut dosyası
, betiğin tüm parametreleri çalıştırması
gerekir , vs. orijinal kapanma çalıştırılabilir koduna BUT: komut dosyası bunları kaydetmelidir.
last -x
)
cat /usr/adm/syslog
benim durumumda sunucuyu kapatan ups yazılımıydı.
/etc/rc.d/7/upsd.boot
/var/log/acpid
: ortaya çıktı güç düğmesine basıldı. Başka bir fikir, acid bir ipucu vermiyorsa nereye bakmalı?