GNU/Linux >> Belajar Linux >  >> Linux

Cara Melihat Tanggal dan Waktu Reboot Sistem Linux

Pertanyaan: Dari perintah uptime, saya tahu berapa hari dan jam sistem aktif dan berjalan. Apakah ada cara mudah untuk melihat tanggal dan waktu yang tepat saat sistem terakhir kali di-boot ulang? yaitu Tepatnya dari tanggal dan jam berapa sistem telah aktif dan berjalan?

Jawaban: Uptime memang memberikan informasi ini secara tidak langsung. Pada contoh berikut, ini menunjukkan bahwa sistem telah aktif dan berjalan selama "137 hari, 6 jam dan 13 menit". Namun, Anda tidak dapat dengan cepat menghitung tanggal dan waktu reboot yang tepat dari ini.

$ uptime
 20:52:01 up 137 days,  6:13,  1 user,  load average: 0.00, 0.00, 0.00

Alih-alih mengatakan sistem telah aktif dan berjalan selama "137 hari, 6 jam dan 13 menit" terakhir, tidak baik jika dikatakan sistem telah berjalan sejak "Sab 14 Mei 20:38" (atau sesuatu seperti itu)? Itulah yang dilakukan oleh salah satu dari tiga metode berikut.

1. Perintah terakhir

Gunakan perintah 'reboot terakhir', yang akan menampilkan semua tanggal dan waktu reboot sebelumnya untuk sistem. Ini mengambil informasi dari file /var/log/wtmp.

$ last reboot
reboot   system boot  2.6.32-100.28.5. Sat May 14 20:38 - 23:55 (137+06:16)
reboot   system boot  2.6.32-100.28.5. Sun Apr 24 21:28 - 23:37 (15+09:08)  

wtmp begins Thu Sun 24 17:28:47 2011

2. Siapa yang memerintahkan

Gunakan perintah 'who -b' yang menampilkan tanggal dan waktu reboot sistem terakhir.

$ who -b
system boot  2011-05-14 20:38

3. Gunakan cuplikan kode perl

Jika Anda bersikeras menggunakan output uptime untuk menghitung waktu reboot terakhir, Anda dapat melakukannya secara manual, atau menggunakan cuplikan kode perl berikut.

uptime | \
perl -ne '/.*up +(?:(\d+) days?,? +)?(\d+):(\d+),.*/; $total=((($1*24+$2)*60+$3)*60);
$now=time(); $now-=$total; $now=localtime($now); print $now,"\n";'

Dalam contoh ini, cuplikan kode di atas menampilkan output berikut:

Sat May 14 20:38:39 2011

Saya tidak ingat persis dari mana saya mendapatkan potongan kode perl di atas. Tapi, itu tidak menghentikan saya untuk mencoba mencari tahu apa fungsinya. Mari kita ambil kesempatan ini untuk belajar sedikit perl. Inilah yang dilakukan cuplikan kode perl di atas:

  • -n adalah opsi baris perintah Perl. Menyebabkan program perl mengulang input
  • -e adalah opsi baris perintah Perl. Menunjukkan bahwa itu adalah perl one liner ( perl tidak akan mengharapkan nama file, seperti “perl filename.pl”).

Berikut Regex yang digunakan beserta penjelasannya:

  • .*up + – Mencocokkan apa saja hingga string “naik” dan satu spasi atau lebih, untuk mencocokkan yang berikut dari output waktu aktif.
  • (?:(\d+) hari?,? +) – Satu grup
  • (?:(\d+) hari?,? +)? – Tanda tanya yang diikuti oleh grup ini menyatakan bahwa grup ini opsional

Bagian ini mengatakan, jika ada bagian hari dalam output uptime, tangkap, atau abaikan. Berikut ini adalah rincian grup di atas.

  • (?:pattern) – Tanda kurung bukan penangkap yang digunakan untuk mengelompokkan, tetapi tidak menangkap yang cocok dengan memori yaitu $1, $2 dll ..
  • (\d+) – Cocokkan satu digit atau lebih dan masukkan ke $1 (karena ini adalah grup pertama)
  • SPACE hari? – Cocokkan ruang literal diikuti dengan hari atau hari
  • ,? – koma adalah opsional
  • SPACE+ – satu atau beberapa spasi

Berikut ini memecah pola ini (\d+):(\d+),.*/

  • (\d+) – Tangkap bagian jam menjadi $2
  • :– Diikuti oleh titik dua
  • (\d+) – Abadikan bagian menit menjadi $3
  • , – Cocokkan koma
  • .* – Cocokkan yang lainnya

Berikut ini adalah sisa fungsi waktu dalam cuplikan kode perl di atas.

  • $total=((($1*24+$2)*60+$3)*60) – Hitung jumlah total detik sistem UP. yaitu (((hari*24+jam)*60+menit)*60 yang memberikan detik (seperti perhitungan zaman)
  • $sekarang=waktu(); – Dapatkan waktu saat ini dalam hitungan detik (waktu zaman)
  • $sekarang-=$total; – Kurangi total waktu berjalan sistem dari waktu saat ini. Jadi ini mendapatkan waktu yang tepat dalam hitungan detik ketika sistem dimulai
  • $sekarang=waktu setempat($sekarang); - Konversi waktu zaman (waktu dalam detik). waktu lokal mengembalikan waktu Epoch yang diberikan dalam format yang dapat dibaca manusia
  • cetak $now,”\n” – Terakhir, ini mencetak waktu.

Linux
  1. 7 Contoh Perintah Tanggal Linux untuk Menampilkan dan Mengatur Waktu Tanggal Sistem

  2. Tetapkan tanggal dan waktu Sistem menggunakan C++ di Linux

  3. Sudah berapa lama sistem Linux saya berjalan?

  1. Menggunakan perintah timedatectl untuk mengubah waktu dan tanggal pada sistem Linux RHEL7

  2. Cara Menonaktifkan Perintah Shutdown dan Reboot di Linux

  3. Cara memeriksa Versi OS dan Linux

  1. Cara Memeriksa Uptime Sistem di Linux

  2. Perintah reboot dan shutdown Linux

  3. Cara Menggunakan Perintah Shutdown dan Reboot Linux dengan Contoh