Superuser

Autor Thema: sekunden seit 1.1. 1970 (bash)  (Gelesen 11468 mal)

Offline tassilo

  • Sobl Master
  • ****
  • Beiträge: 437
    • Freie Jobbörse rund um Linux
sekunden seit 1.1. 1970 (bash)
« am: 10. September 2009, 18:25:55 »
moin

ich bin ein wenig am verzweifeln. wie bekomme ich in der bash die sek seit 1.1. 1970 . bei linux macht sowas date %s aber sowas gibts gar nicht in den man pages zu date.

laut http://www.sonnenblen.de/solaris/mit_datum_rechnen-t3246.0.html geht das wirklich nicht mit "normalen" boardmitteln ? irgendwie komisch denn "intern" wird bestimmt mit sek gerechnet

jemand ne idee ?

grüße

tassilo
« Letzte Änderung: 10. September 2009, 18:34:39 von tassilo »

sonnenblen.de - Das unabhängige Sun User Forum

sekunden seit 1.1. 1970 (bash)
« am: 10. September 2009, 18:25:55 »

Offline Sparky

  • Sobl Guru
  • *****
  • Beiträge: 3260
  • HyperSPARC ! Das fetzt......
    • HyperSTATION
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #1 am: 10. September 2009, 20:40:28 »
Whaaaaaat?
www.hyperstation.de
alles zu HyperSPARC, SBus-Karten und AG-10E Howto

Offline Ten Little Indyans

  • Sobl Bachelor
  • ***
  • Beiträge: 218
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #2 am: 10. September 2009, 21:50:12 »
Das Problem hat nichts mit der bash an sich zu tun (bzw. lässt sich mit dieser allein auch nicht einfacher lösen). Der "normale" Unix date Befehl bietet nun mal weniger Möglichkeiten als die GNU-Version die bei Linux Verwendung findet.

Pragmatische Lösung: Auf der Solaris-Kiste die GNU Coreutils installieren. Da sind dann neben date noch etliche andere Tools in der GNU-"Eierwollmilchsau"-Edition verfügbar. Möglicherweise sind sie auch bereits installiert. Schon mal gdate, /opt/sfw/bin/date oder /usr/local/bin/date probiert?

Ansonsten gibt es noch folgenden Trick, der genau auf der These "intern wird bestimmt mit sek gerechnet" basiert:

/usr/bin/truss /usr/bin/date 2>&1 | grep ^time | awk '{print $3}'
truss ist ein Debugger für Systemaufrufe. date holt sich die Zeit über time(2), wie vermutet in Sekunden seit 1970. Mit grep und awk wird das Ergebnis noch optisch aufbereitet so dass nur noch der Rückgabewert des time() Systemaufrufs übrig bleibt. Die Umlenkung 2>&1 ist nötig weil die truss-Ausgaben auf Standard Error geschrieben werden.

claus

  • Gast
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #3 am: 10. September 2009, 22:17:57 »
Blöde Frage: Kannst Du nicht einfach eine Datei anlegen und dann per stat die Creation Timestamp ausgeben lassen? Damit solltest Du doch die Sekunden seit 1970 bekommen?

Claus

Offline dornroeschen

  • Sobl Junior
  • **
  • Beiträge: 64
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #4 am: 11. September 2009, 06:40:13 »
perl -e 'print time, "\n"'
Rainer

claus

  • Gast
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #5 am: 11. September 2009, 08:36:39 »
OK, das ist natürlich das einfachste.

Offline Ten Little Indyans

  • Sobl Bachelor
  • ***
  • Beiträge: 218
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #6 am: 11. September 2009, 08:40:28 »
Blöde Frage: Kannst Du nicht einfach eine Datei anlegen und dann per stat die Creation Timestamp ausgeben lassen? Damit solltest Du doch die Sekunden seit 1970 bekommen?
Das geht aber nur wenn der stat Befehl vorhanden ist, also die GNU Coreutils installiert sind.

Letztlich hängt alles davon ab welche Tools vorhanden sind bzw. genutzt werden sollen/können/dürfen. Die Perl-Lösung ist einfach, aber Perl hat nicht nur Freunde... ::) Ich denke mal in den meisten anderen Skriptsprachen (Python, PHP, Ruby usw.) dürfte es auch nur ein Einzeiler sein.

Falls ein C-Compiler vorhanden ist kann man sich auch ruck-zuck was bauen.
$ cat > epoch.c
int main() { printf("%d", time(0)); }
^D
$ cc -o epoch epoch.c
$ ./epoch
1252650912

Auf meine Systeme packe ich grundsätzlich die Companion CD mit drauf, denn es gibt immer wieder Fälle wo man die GNU-Version einens Tools braucht (z.B. make).

Offline tassilo

  • Sobl Master
  • ****
  • Beiträge: 437
    • Freie Jobbörse rund um Linux
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #7 am: 11. September 2009, 09:06:14 »
hallo

danke für die vielen antworten. es scheint ja wirklich nicht mit den "normalen" boardmitteln zu funktionieren. ich bin sehr überrascht.
am nähesten scheint die version mit truss zu kommen, hmmm.

das man das mit perl, c, etc machen kann ist mir klar. aber nur um die zeit zu bekommen perl zu starten... wenn ich sowieso perl habe mache ich das komplett in perl..
 und das mit den gnu tools. die sind ne feine sache (ich merk ja immer wie nett sowas ist wenn ich auf einem system bin wo es die nicht gibt) aber die sind halt nicht "überall" installiert..

grüße

tassilo

Offline dominik

  • Sobl Bachelor
  • ***
  • Beiträge: 182
  • Me, myself & I
    • Meine Heimseite
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #8 am: 11. September 2009, 11:06:46 »
Also einfach noch als Hinweis.  http://www.google.com/search?client=opera&rls=en&q=solaris+date+epoch&sourceid=opera&ie=utf-8&oe=utf-8&safe=images brachte mir unter den ersten 4 Links 3 Stück, welche sehr schön die von Dir gesuchte Funktion (rein mit Bordmitteln) beschrieben. Manchmal frage ich mich schon, ob das Board hier lieber zum Plaudern benutzt wird...

Zitat
root@sbsubs170 # /usr/bin/truss /usr/bin/date 2>&1 |  nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);print $2}'
1252659806
root@sbsubs170 # nawk 'BEGIN{print srand()}'
1252659824

Gruss
Dominik

Offline tassilo

  • Sobl Master
  • ****
  • Beiträge: 437
    • Freie Jobbörse rund um Linux
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #9 am: 11. September 2009, 18:32:58 »
moin

..jo hatten den "epoc" nicht im suchbegriff...
und nat. benutze ich das board zum plaudern, wusste nicht das das verwerflich ist...

grüße

tassilo

sonnenblen.de - Das unabhängige Sun User Forum

Re: sekunden seit 1.1. 1970 (bash)
« Antwort #9 am: 11. September 2009, 18:32:58 »

claus

  • Gast
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #10 am: 11. September 2009, 22:11:26 »
Ist denn nawk überall dabei?

Claus

Offline Sonnenbrand

  • Sobl Junior
  • **
  • Beiträge: 84
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #11 am: 15. September 2009, 12:42:15 »
Moin,

Ist denn nawk überall dabei?

Claus

bin seit 1988 mit SUNs beschäftigt und irgendwann kam zu awk dann noch nawk dazu. Aber das ist schon so lange her, da kann ich so auf die schnelle nicht sagen ab welchen SUN-OS Release das mitgeliefert wurde.

Fazit: Ja, ist per Default bei Solaris dabei.

Andi

Offline dominik

  • Sobl Bachelor
  • ***
  • Beiträge: 182
  • Me, myself & I
    • Meine Heimseite
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #12 am: 15. September 2009, 13:27:53 »
Die älteste Maschine welche ich hier grad zur Hand hab ist ein Solaris 2.6 5/98:

Zitat
root@ICM-BALE # uname -a
SunOS ICM-BALE 5.6 Generic_105181-19 sun4u sparc SUNW,Ultra-4
root@ICM-BALE # which nawk
/usr/bin/nawk

Vielleicht schaff ich's heute Abend mal meine IPC mit SunOS 4.1.3 zu booten ;)

Gruss
Dominik

Offline Sonnenbrand

  • Sobl Junior
  • **
  • Beiträge: 84
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #13 am: 15. September 2009, 14:08:30 »
Es würde mich nicht wundern wenn es mit SunOS 4.0 rein kam.
(Aber so was uraltes finde ich auch nicht mehr... *g*)

Andi

Offline dominik

  • Sobl Bachelor
  • ***
  • Beiträge: 182
  • Me, myself & I
    • Meine Heimseite
Re: sekunden seit 1.1. 1970 (bash)
« Antwort #14 am: 15. September 2009, 14:48:48 »
Also in der Wikipedia steht, dass New AWK 1988 veröffentlicht wurde und " its implementation was made available in releases of UNIX System V". Daher wohl eher kein SunOS.

Gruss
Dominik