Re: Ausgabeumleitung

From: Marc Santhoff <M.Santhoff(at)t-online.de>
Date: Mon, 04 Oct 2004 12:04:46 +0200

Am Mo, den 04.10.2004 schrieb Peter Wullinger um 08:10:
> In epistula a Marc Santhoff, die horaque Mon, Oct 04, 2004 at 01:14:14AM +0200:
> > N'Abend,
> >
> > ich versuche gerade, die Ausgabe (stdout und stderr) in eine Datei
> > umzuleiten. DAs funktioniert auch gut, solange es von einem Terminal
> > gestartet wird.
>
> Nimm deinem Programm doch mal auf der Konsole das Terminal (also stdin
> und stdout) weg:
>
> % tty <&- 2>&-
> not a tty
> % /usr/local/bin/PM <&- 2<&- >/tmp/logtest 2>&1

"Fehlender Name für Umlenkung."

bekomme ich dann mitgeteilt (???). Diese Formen mit - stehen ja auch
i.d. manpage und leuchten mir ein.

Aber mit den Umleitungen stehe ich leider noch etwas auf Kriegsfuß. Auch
die Reihenfolge leuchtet mir nicht wirklich ein (erst > und dann 2>&1).
Woher weiß die shell, wann was gelten soll?

> >
> > Wenn es aber auch .xinitrc laufen soll, geht's nicht. Schicke ich ein
> > Shell-Skript in den Hintergrund, wird auch noch das Programm mit Signal
> > 4 reproduzierbar gekillt. Wenn es im Vordergrund läuft, geht alles aber
> > die Ausgaben landen auf der Konsole.
>
> Also
> % shellscript &
> liefert auch schon SIGILL? In dem Fall stimmt was nicht, denn
> dann hat das Skript noch das Terminal, es ist nur nicht in der
> Vordergrundprozeßgruppe (schönes Bandwurmwort) ist, bekommt es
> SIGTTIN. Aber nur, wenn es lesend zugreifen will.

Ich kann es aktuell nicht auf der Zielhardware nachvollziehen, aber der
genaue Zusammenhang ist:

- Start eines Skriptes aus /usr/local/etc/rc.d
- Dieses startet ein Shellskript im Hintergrund (damit es dort nicht
festhängt)
- Das Skript rotiert die Logs und ruft "startx" auf, crasht das PM wird
es neu gestartet, kehrt es normal zurück ist Ende
- in .xinitrc wird wie schon gepostet das Programm aufgerufen

Wenn ich bei dieser Reihenfolge in rc.d das zweite Skript in den
Hintergrund sschicke, startet der XServer brav, das PM-Programm wird
angeworfen und beginnt zu starten (GUI wird aufgebaut) und dann ist es
sofort wieder weg mit SIGILL. Das steht dann aber auch im Log. :(

> Bei SIGILL solltest du eventuell einen Core-Dump rumliegen haben, vo
> welchem Programm ist der? gdb leistet da gute Dienste.

Wenn die Kiste wieder hier ist, werd' ich mal das Dateisystem r/w setzen
und einen core aufbewahren.

> % gdb <program> <core>
>
> >
> > .xinitrc:
> > <--->
> > LOGPATH="/mnt/Protokoll"
> > LOGNAME="Protokoll"
>
> Das solltest du vermeiden:
>
> login(1):
> The login utility enters information into the environment (see
> environ(7)) specifying the user's home directory (HOME), command
> interpreter (SHELL), search path (PATH), terminal type (TERM) and user
> name (both LOGNAME and USER).
> ^^^^^^^

Autsch, werd' ich sofort ändern. Vielleicht mag mein Programm das schon
nicht, mal gucken.

> >
> > xrdb -load $HOME/.Xresources
> > cd /usr/local/PM/bin
> > (date; ./PM; date) > ${LOGPATH}/${LOGNAME}.log 2>&1
> > <--->
>
> Bei mir testweise:
>
> == ~/.xession ==
> ( date ) > /tmp/xession-log 2>&1
> == ~/.xession ==
>
> == /tmp/xession-log ==
> Mon Oct 4 07:53:05 CEST 2004
> == /tmp/xession-log ==
>
> >
> > Ach ja, das Phänomen mit Sig4 hatte ich wohl, als statt direkt in der
> > letzten Zeile mit "exec" gestartet wurde ...
>
> 4 = SIGILL
>
> Stirbt da das Programm "PM"? Wenn ja, dann ist damit was im Argen,
> denke ich.

So sehe ich es auch, ich hatte nur gestern keine Gelegenheit, einfach
mal was anderes zu benutzen, statt PM. Wie schon erwähnt, so gegen Ende
der Woche ist der Kasten wieder hier, dann kann ich nochmal ein bischen
rumprobieren.

Solange die Umleitung nicht per se (z.B. syntaktisch) falsch ist, muß
wohl ein tiefer sitzender Fehler schuld sein.

Danke so weit,
Marc

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 04 Oct 2004 - 12:05:47 CEST

search this site