Re: wie ermitteln ob /dev/tty beschrieben werden kann
Frank Dietrich wrote:
> wie kann ich auf einfachem Weg feststellen ob ein Prozess etwas auf
> einer Konsole ausgeben kann?
>
> Nutze ein Skript in der Art.
>
> --- testmoi.sh ---
> #!/bin/sh
>
> # stdout und stderr in Datei umleiten
> exec > /tmp/logfile 2>&1
>
> # alle Ausgaben auch auf der Konsole anzeigen
> echo "Ausgabe eines Programmes" | tee /dev/tty
> # ... hier folgen weitere Programmaufrufe
> --- testmoi.sh ---
>
> Starte ich das Script aus einem Terminal, dann sehe ich auch alle
> Ausgaben.
>
> Starte ich das Script per 'at', dann beschwert sich 'tee' über
> ein nicht vorhandenes Gerät /dev/tty. Allerdings zeigt ein
> 'ls -l /dev/tty' innerhalb des Script das diese Datei vorhanden ist.
Mit welchen Berechtigungen?
Generell gilt, daß /dev/tty jeweils dem aktuellen Terminal zugeordnet
wird. Das ist natürlich nur bei interaktivem Betrieb der Fall. Einem
Cronjob oder Atjob ist in der Regel kein Terminal zugewiesen.
> Gib es eine bessere Lösung als folgendes vor dem 'exec ...'?
>
> ....
set +e
> echo > /dev/tty
> if [ $? -eq 0 ]
> then
> # kann auf /dev/tty ausgeben
> else
> # kann nicht auf /dev/tty ausgeben
> fi
set -e
Ja, gibt es, zumindest in Bash:
if [ -t 1 ]
then
# Terminal vorhanden
else
# Kein Terminal vorhanden
fi
> Wenn möglich sollte die Lösung unabhängig von der verwendeten Shell
> funktionieren.
Wenn Du statt [ test verwendest, ist es von der Shell unabhängig, da
/usr/bin/test verwendet wird.
Gruesse,
Joey
--
GNU GPL: "The source will be with you... always."
TV-Tip: Sonntag, 1. Oktober 2006, 9:02, ZDF
http://www.zdf.de/ZDFde/inhalt/8/0,1872,3983400,00.html
Please always Cc to me when replying to me on the lists.
Reply to: