Re: ps timestamp
David Haller <[email protected]>
| Newsgroups | gmane.linux.suse.programming,gmane.linux.suse.general.german |
|---|---|
| Message-ID | <[email protected]> |
Hallo,
Am Mon, 17 Mär 2008, Andre Hübner schrieb:
>ich versuche grade krampfhaft per ps die Prozessliste auszugeben und die
>Startzeit eines Prozesses als timestamp zu bekommen.
>Ich bekomme immer ein Mar15 oder ein 15:23 bzw. 01:36:01 aber die Startzeit
>nie als timestamp.
>Mit timestamp rechnet es sich halt einfacher. Intern wird dass doch sicher
>auch als timestamp gehalten, ich krieg aber leider die Ausgabe nicht hin.
Geht auch mit der aktuellen Version 3.2.7 von procps nicht, es gibt
schlicht kein Feld dafür. Siehe ps/output.c in den Quellen.
Man kann es aber "hacken", in dem man eine Lib bäckt, die ctime
umbiegt und diese dann per LD_PRELOAD lädt...
Dürfte praktischer sein, als mit anhand der PIDs die Startzeiten
selber aus /proc herauszupfriemeln...
Näheres bei Interesse (sind halt doch ein paar Zeilen, v.a. mit
Makefile, was in dem Fall nicht ganz unwichtig ist ;)
$ make
[..]
LD_PRELOAD=./libctimeastimestamp.so ps -eo lstart,cmd | tail -n 2
1205810553 ps -eo lstart,cmd
1205810553 tail -n 2
$
Weitere Felder kann man natürlich noch dazunehmen, das Feld für lstart
wird halt in ps/output.c von procps so breit formatiert, da kann man
nicht direkt was machen. Und ein anderes Format zu nehmen geht auch
nicht so einfach, da dort die Ausgabe von ctime noch manipuliert wird.
Ein Beispiel der Weiterverarbeitung:
$ LD_PRELOAD=./libctimeastimestamp.so ps -eo lstart,cmd \
| tail -n 3 | awk '{ $1 = strftime("["$1"] %c ", $1); print;}'
[1205811965] Tue Mar 18 04:46:05 2008 ps -eo lstart,cmd
[1205811965] Tue Mar 18 04:46:05 2008 tail -n 3
[1205811965] Tue Mar 18 04:46:05 2008 awk { $1 = strftime("["$1"] %c ", $1); print;}
Also, bei Interesse melden, wobei wir in opensuse-programming-de
"onT" wären, da könnte ich die Details mailen...
X-Mailed & F'up 2 opensuse-programming-de
-dnh
--
Shin - Device for finding furniture in the dark.