[linux] output systemctl in unixtime?

Pagina: 1
Acties:

Vraag


  • hondeman
  • Registratie: Mei 2003
  • Laatst online: 09-03-2023
systemctl geeft datum/tijd output in de current timezone. Als ik wil weten sinds wanneer een service draait kun je dat uitvinden met het commando (b.v. cups):

> systemctl show cups.service | grep ^ExecMainStartTimestamp
ExecMainStartTimestamp=Fri 2017-09-22 09:16:02 CEST

Eventueel een makkelijker timestamp is "UTC":

> TZ='UTC' systemctl show cups.service | grep ^ExecMainStartTimestamp
ExecMainStartTimestamp=Fri 2017-09-22 07:16:02 UTC

Kan ik de datum/tijd ook in 'seconden sinds epoch' krijgen? Kortom: bestaat er een Timezone waarbij de output van het systemctl commando niet naar 'human readable' tijd wordt omgebouwd?

Alle reacties


  • hcQd
  • Registratie: September 2009
  • Laatst online: 13:25
Dat zul je moeten scripten:

$ date +%s -d 'Fri 2017-09-22 09:16:02 CEST'
1506064562

  • swbr
  • Registratie: Maart 2009
  • Laatst online: 16:38
of in één regel:

code:
1
2
# TZ='UTC' systemctl show ssh | grep ^ExecMainStartTimestamp= | sed 's/ExecMainStartTimestamp=//g' | date +%s
# 1506611460


En dat kan vast nog wel mooier als je er langer dan 10 seconden over nadenkt ;)

If you try and take a cat apart to see how it works, the first thing you have on your hands is a non-working cat. -DNA


  • 0stone0
  • Registratie: Maart 2015
  • Laatst online: 22-09 16:40

0stone0

01000010 01101111 01100101 !

Ahh, @swbr is net wat sneller :(
code:
1
2
# systemctl show cups.service | grep ^ExecMainStartTimestamp= | sed 's/.*=//' | date +%s
# 1506611677

[ Voor 5% gewijzigd door 0stone0 op 28-09-2017 17:15 ]

"~~Linux is only free if your time has no value"


  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 16:22
Als je sed in de pipeline gooit, kan grep er wel weer uit.
systemctl show cups.service | sed -n 's/^ExecMainStartTimestamp=//p' | date +%s

  • hcQd
  • Registratie: September 2009
  • Laatst online: 13:25
Of zelfs zonder grep of sed:
code:
1
2
start_timestamp=$(systemctl show cups.service -p ExecMainStartTimestamp)
date +%s -d "${start_timestamp#*=}"

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 16:22
Oja, ik schonk eigenlijk helemaal geen aandacht aan dat systemctl-commando. Maar gebruik dan ook meteen --value met -p zodat je de uitvoer rechtstreeks aan date kunt voeren.
Pagina: 1