Seite 1 von 1

shell script: tmp. dateizugriff regeln ?

Verfasst: 21.10.2004, 13:44
von RuRu
hi

ich habe ein shellscript geschrieben, das die debug ausgaben eines progs. in eine log datei packt.

problem ist nur, wenn von mehreren rechnern das prog aufgerufen wird, ist das schlecht mit der übersicht im log :)

gibt es eine möglichkeit die logdatei nach dem ersten aufruf zu sperren, so dass nur "einer" reinschreiben kann und andere inputs am besten noch gepuffert, danach reingeschoben werden?

ich hoffe mal, dass das geht

gruss und thx im vorraus

Verfasst: 22.10.2004, 01:10
von edgewalker
Aus einem Shellskript heraus AFAIK nur schwer. Aber versuch's mal mit man mktemp. Vielleicht am besten auch noch $HOSTNAME in den Namen aufnehmen?

Verfasst: 22.10.2004, 15:35
von Chawki
Man kann auch ein mandatory file lock nehmen:

http://web.systhug.com/kernel-lock/

Ich habe das bisher nur mit C-Programmen gemacht.

Verfasst: 22.10.2004, 17:03
von edgewalker
Original erstellt von nobody0
Ich habe das bisher nur mit C-Programmen gemacht.
Und da ist auch der Haken, du Honk. :)

Bei einem Shellscript hantiert man eben nicht mit einem offenen Filehandle herum.

Verfasst: 22.10.2004, 22:11
von Chawki
Man kann ja die C-Programme von einem Shellskript aufrufen; das mache ich meistens so ;)

Verfasst: 23.10.2004, 01:43
von edgewalker
Und wenn das C-Programm endet, ist der Lock wieder weg.. :rolleyes:

Verfasst: 23.10.2004, 08:52
von Chawki
Das müßte man testen, aber man kann das Programm ja im Hintergrund weiterlaufen lassen, bis man es am Ende killt. Natürlich wäre das Beste wohl das Skript nur zum Starten des C-Programms zu nehmen.

Verfasst: 23.10.2004, 09:45
von edgewalker
Nur dumm, dass bei einem mandatory lock dass Skript dann mit der Datei nichts mehr anstellen kann..

Verfasst: 23.10.2004, 15:04
von Chawki
Ja, eigentlich muß man da ein C-Programm nehmen, aber eigentlich sollte man generell ein C-Programm nehmen, meine ich :rolleyes:

Verfasst: 23.10.2004, 19:03
von edgewalker
Du schreibst also keine Shellskripte?

Verfasst: 23.10.2004, 19:36
von Chawki
Doch, aber häufiger C-Programme, auch wegen der Portabilität, Performance und Skalierbarkeit mittels Pthreads.

----------------------------------------------------------
# define mc_OFFSETOF(a, b) ((int)(&(((a*)(0))->b)))
# define mc_NIBBLE_TO_TEXT(n) ("0123456789ABCDEF"[ n ])
# define mc_CAST(new_type,old_object) (*((new_type *)(&(old_object))))
# define mc_V_SUBROUTINE(VECTOR) (*(void(**)(void))(VECTOR))()
# define mc_ISNAN(x) ((x) != (x))
# ifndef NAN
# define NAN (0./0.)
# endif
# ifndef INF
# define INF (1./0.)
# endif
# define mc_ADVICE if (argc > 1 && 0 == strncmp (argv[1], "-advice", 10) ) \
{ \
(void)printf ("Don't Panic!\n"); \
exit (42); \
} /* 42: The meaning of life, the universe, and everything. */

Verfasst: 23.10.2004, 22:18
von itaris
Bla bla bla ...

Verfasst: 26.10.2004, 20:18
von RuRu
so ich habs nu anders gemacht ... das prog loggt in verschiedene tmp logs beim aufruf und die werden dann wenn sie fertig sind "automatisch" in das finale log gepackt und gelöscht

gelöst mit perl

danke trotzdem :)