GNU/Linux >> Znalost Linux >  >> Linux

Jak zobrazit datum a čas restartu systému Linux

Otázka: Z příkazu uptime vím, kolik dní a hodin je systém v provozu. Existuje snadný způsob, jak zobrazit přesné datum a čas, kdy byl systém naposledy restartován? tj. Od jakého data a času přesně byl systém spuštěn?

Odpověď: Uptime poskytuje tyto informace nepřímo. V následujícím příkladu to znamená, že systém byl v provozu „137 dní, 6 hodin a 13 minut“. Z toho však nemůžete rychle vypočítat přesné datum a čas restartu.

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

Namísto sdělení, že systém byl v provozu za posledních „137 dní, 6 hodin a 13 minut“, by nebylo hezké, kdyby bylo uvedeno, že systém běží od „so 14. května 20:38“ (nebo něco podobného že)? To je přesně to, co dělá kterákoli z následujících tří metod.

1. Poslední příkaz

Použijte příkaz „last reboot“, který zobrazí datum a čas předchozího restartu systému. Toto vybírá informace ze souboru /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. Kdo velí

Použijte příkaz „who -b“, který zobrazí datum a čas posledního restartu systému.

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

3. Použijte úryvek kódu perl

Pokud trváte na použití výstupu uptime k výpočtu doby posledního restartu, můžete to udělat ručně nebo použít následující úryvek kódu perl.

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";'

V tomto příkladu výše uvedený fragment kódu zobrazil následující výstup:

Sat May 14 20:38:39 2011

Nepamatuji si přesně, odkud jsem získal výše uvedený fragment kódu v perlu. To mi však nezabránilo v pokusu zjistit, co to dělá. Využijme této příležitosti a naučte se malý perl. Výše uvedený úryvek kódu v perlu dělá toto:

  • -n je volba příkazového řádku perlu. Způsobí, že program v perlu zacyklí vstup
  • -e je volba příkazového řádku perlu. Označuje, že se jedná o perl one liner (tj. perl nebude očekávat název souboru, něco jako „perl filename.pl“).

Následuje použitý regulární výraz a jeho vysvětlení:

  • .*up + – Přiřaďte cokoli, dokud nebude řetězec „up“ a jedna nebo více mezer, aby bylo možné porovnat následující položky z výstupu dostupnosti.
  • (?:(\d+) dnů?,? +) – Jedna skupina
  • (?:(\d+) dnů?,? +)? – Otazník za touto skupinou říká, že tato skupina je volitelná

Tato část říká, že pokud je ve výstupu uptime část dní, zachyťte ji nebo ignorujte. Následující text podrobně rozebírá výše uvedenou skupinu.

  • (?:pattern) – Nezachycující závorky, které se používají k seskupování, ale nezachycují odpovídající do paměti, což je $1, $2 atd..
  • (\d+) – Porovnejte jednu nebo více číslic a vložte ji do $1 (protože toto je první skupina)
  • SPACE dní? – Porovnejte doslovnou mezeru následovanou dnem nebo dny
  • ,? – čárka je volitelná
  • SPACE+ – jedna nebo více mezer

Následující text rozděluje tento vzor (\d+):(\d+),.*/

  • (\d+) – Zachyťte část hodiny do $2
  • :– Následuje dvojtečka
  • (\d+) – Zachyťte minutovou část do $3
  • – Odpovídající čárka
  • .* – Shoduje se se vším ostatním

Následuje zbytek funkce času ve výše uvedeném úryvku kódu v perlu.

  • $total=(((($1*24+$2)*60+$3)*60) – Vypočítejte celkový počet sekund, po které je systém NAHORU. tj. (((dny*24+hodiny)*60+minuty)*60, což udává sekundy (jako výpočet epochy)
  • $now=time(); – Získejte aktuální čas v sekundách (čas epochy)
  • $nyní-=$celkem; – Odečtěte celkovou dobu běhu systému od aktuálního času. Takže toto je přesný čas v sekundách, kdy byl systém spuštěn
  • $now=localtime($now); – Převeďte čas epochy ( čas v sekundách ). localtime vrací daný čas epochy ve formátu čitelném pro člověka
  • vytisknout $now,”\n” – Nakonec se vytiskne čas.

Linux
  1. Použití příkazu timedatectl ke změně času a data v systému RHEL7 Linux

  2. Jak zkontrolovat verzi OS a Linuxu

  3. Jak používat Linux Shutdown and Reboot Command s příklady

  1. Jak zakázat příkazy vypnutí a restartu v Linuxu

  2. Nastavte systémové datum a čas pomocí C++ v Linuxu

  3. Získání data a času spuštění systému v Linuxu

  1. Jak zkontrolovat dostupnost systému v Linuxu

  2. Příkazy pro restart a vypnutí Linuxu

  3. 7 Linux Date Příklady příkazů pro zobrazení a nastavení systémového data a času