[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: