Sie sind nicht angemeldet.

1

02.08.2010, 19:38

[gelöst] echo mit Umleitung

Ich benutze den Befehl

Quellcode

1
 echo -e "\007" > /dev/tty10 
, den ich Im netz so gefunden habe, um mir eingehende Mails akustisch melden zu lassen. Allerdings ohne die Umleitung am Schluß; funktioniert auch problemlos. Meine Frage jetzt : ist das ein Risiko, die Umleitung wegzulassen ? Wozu soll die überhaupt gut sein ?

2

02.08.2010, 21:04

Wenn Du sie weg lässt, dann piept es nicht auf tty10 sondern evtl. dort, wo es ausgeführt wird, doch kann das auch so piepsen, wie das TTY?

3

03.08.2010, 10:59

tty10 gibts bei mir nicht; mit <dev/null ändert sich auch nichts; ob mit oder ohne Umleitung : es piept bei mir immer :)
den einzigen Unterschied den ich sehe : auf der 1.Konsole wird bei jedem Piep eine Zeile geschrieben; entweder ein >/dev/tty10 oder wenn's leer ist eben eine Leerzeile. Was ich jetzt eigentlich wissen wollte : braucht's diese Angabe für irgendeine Log-Datei, die sonst Ärger machen kann oder sowas ?

4

03.08.2010, 22:23

Eigentlich wird die Umleitung benötigt, damit das Piepsen nicht woanders landet. Theoretisch könnte es auch in einem Log landen statt direkt zu piepsen. Das Log würde dann z.B. piepsen, wenn man es mit "cat" ansieht.

Wenn bei Dir ">/dev/tty10" auf der erste Konsole geschrieben wird, dann ist etwas falsch. Denn das sollte von er Shell interpretiert und nicht ausgegeben werden. Bitte versuche mal sowas:

Quellcode

1
bash -c 'echo -e "\007" > /dev/tty10'
Geht das besser?

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

5

03.08.2010, 23:54

Zitat

Original von oziris
Geht das besser?


wieso, es piept doch, wo ist das problem?
die umleitung kann er weglassen und ok.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

6

04.08.2010, 09:54

Zitat

die umleitung kann er weglassen und ok.

:danke:, das wollte ich wissen; das mit der Ausgabe nehm ich dann einfach mal so hin....

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

7

04.08.2010, 13:40

wenn du die ausgabe der leerzeile unterbinden willst, nimm einfach
echo -ne "\007"
die option n unterbindet die ausgabe des newline durch echo.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

8

04.08.2010, 20:52

Ich bin mir eben nicht sicher, dass delix das nicht irgendwo testet und es dann aber woanders implementiert, wo es dann am Ende eben doch im Log landet, statt zu piepsen. Würde die Umleitung funktionieren, dann wäre es ganz sicher, dass es nicht im Log landet und eine komische Zeile gäbe es dann auch nicht; daher der Befehl den ich Vorschlug. ...aber egal, weil delix kann sich ja dann nochmal melden, falls es Probleme gibt.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

9

04.08.2010, 21:24

Zitat

Original von oziris
und eine komische Zeile gäbe es dann auch nicht; daher der Befehl den ich Vorschlug. ...aber egal, weil delix kann sich ja dann nochmal melden, falls es Probleme gibt.


die zeilenschaltung gibt es wegen dem fehlenden n
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

10

04.08.2010, 22:11

Ich meine doch nicht nur eine neue Leerzeile, sondern eine komische Zeile mit "> /dev/tty10" drin.

Zitat

Original von delix
auf der 1.Konsole wird bei jedem Piep eine Zeile geschrieben; entweder ein >/dev/tty10 oder wenn's leer ist eben eine Leerzeile.
Daraus schloss ich, dass "> /dev/tty10" nicht von einer Shell interpretiert wird, sondern so ausgegeben wird, als hätte man das ">" in der Shell esaped ("\>") oder ge-quote-et bzw. als würde das ohne Shell oder anstatt einer Shell gestartet.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

11

04.08.2010, 22:25

nein, eine bash wird da höchstwahrscheinlich nicht laufen, aber die ausgabe wird wahrscheinlich auf vc10 landen und das virtuelle terminal piepen lassen.
er kann ja m,al einen text ausgeben, zb

echo "test" > /dev/tty10
und dann mal auf vc10 nachschauen
hilfreich ist auch ein
ls -al /dev/tty10

die aussage es gäbe kein /dev/tty10 halte ich für unsinnig.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (04.08.2010, 22:25)


12

04.08.2010, 23:06

also bevor es da jetzt einen Grabenkrieg gibt :
ich benutze als mail-client sylpheed 3.0 und dort gibt es die Einstellungsmöglichkeit "Ausführen des folgenden Befehls bei Empfang einer neuen Nachricht. Und in dieses Eingabefeld gebe ich das Kommando echo -..... ein.
Jetzt habe ich es mit dem bash -c ... Befehl ausprobiert, es gibt aber keine Änderung; das n funktioniert.
Sylpheed läuft auf dem 4. Arbeitsbereich von Icewm, der von der 1. Konsole gestartet wird. Und wenn ich icewm schließe, habe ich eben auf dieser 1. Konsole den Text, der nach dem 007" steht und zwar jeweils sooft wie mir neue mails angezeigt wurden.

Und zur /dev/tty10 : /dev/tty10 ist ein Link auf die vc/10 , wie linuxerr schon vermutet hat.
Was mich eben irritiert : der ursprüngliche Befehl hat ja eine Ausgabeumleitung, die bei mir aber als reine Textausgabe ausgegeben wird. Wozu soll die dann überhaupt gut sein ? Bzw. fehlt dann nicht irgendwo etwas, wenn man diesen Teil einfach wegläßt ?

Ich hoffe, jetzt ist das etwas klarer. Aber es läuft ja schon so, wie ich mir das vorgestellt habe; also eigentlich kann der thread von mir aus geschlossen werden.
Und Danke nochmals euch beiden für's kümmern !

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

13

05.08.2010, 06:39

der grund für die umleitung > /dev/tty10 ist relativ einfach.
wenn du ein programm in einer interaktiven shell startest, dann sind stdin/stdout und stderr mit einem wirklichen terminal verbunden und die ausgaben zb von echo (ohne ausgabeumleitung) landen auf eben diesem terminal.
wird ein programm jedoch durch das system im hintergrund gestartet (zb durch crond), dann gibt es keine verbindung zu einem realen terminal, weil das programm in einer nichtinteraktiven shell läuft und diese die ausgaben nicht auf ein reales terminal leiten kann. je nach konfiguration können diese ausgaben dann in einer logdatei (wie oziris schon schrieb) oder zb einer mail an root landen. um das zu vermeiden, leiten einige solche ausgaben an ein terminal um, das nicht durch einen getty-prozess belegt ist, an dem also kein user angemeldet sein kann.
in vielen systemen sind nur vc1..vc6 mit gettys belegt und vc7 mit dem X, die restlichen sind frei.
der vorteil ist, dass man mit solchen umleitungen (z.b. > /dev/tty10) die aktuellen meldungen der programme auf einem terminal verfolgen kann und nicht die logs zumüllt und es auch wirklich piepst, denn wenn die ausgabe im log landet, piepst nichts.

und

wieso grabenkrieg?

wir tauschen ganz sachlich argumente aus. grabenkriege sind was für idioten.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

14

05.08.2010, 11:27

jetzt hab ich das verstanden. Danke nochmals !

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

15

05.08.2010, 15:34

gern geschehen :)
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

16

05.08.2010, 21:07

Also hab ich's doch richtig verstanden. Das bedeutet, das Sylpheed das ohne Shell ausführt (sehr ungewöhnlich) oder escape-t bevor es das an die Shell gibt (Einige exec-Funktionen geben Befehle an eine Shell weiter; i.d.R. /bin/sh ). Dadurch wird die Umleitung nicht interpretiert und auf STDOUT ausgegeben, was in diesem Fall das VT ist, auf dem der Xserver mit dem Window-Manager als Client gestartet wurde.
Ich frage mich, warum die Entwickler sich für sowas entschieden haben... verwirrt doch nur unnötig, oder?

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

17

05.08.2010, 22:19

das slyp-dingens (kenn ich nicht) läuft wohl als childprozess der startenden konsole (müsste man sich mit pstree mal anschauen) und erbt die umleitungen auf die konsole. der unterschied besteht also im prinzip nur darin, dass einmal die konsole vc/10 und andermal die startende konsole gepiept haben, je nachdem ob er die umleitung eingetragen hatte oder nicht.
sollte das teil im hintergrund laufen (daemon-mode oder was auch immer) dann würde das piepen ohne die umleitung dann auch verschwinden.

wie auch immer, jetzt funktionierts erst einmal so wie delix das wollte.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

18

10.08.2010, 17:31

jetzt muß ich das Thema doch nochmal aufwärmen....
ich hab dasselbe jetzt mit KMail in SuSE versucht, und da funktioniert das nicht, es kommt kein Ton. Die Signalton Option funktioniert nicht, weil das Soundsystem nicht aktiviert ist; aber über das ECHO müßte das ja schon gehen. Wenn ich das obige richtig verstanden haben, müßte ich den Befehl an die bash übergeben. Mit dem Bash '.... von oziris hab ich das auch schon versucht -- nix.
Wie lautet denn der Befehl in so einem Fall ?

19

10.08.2010, 20:52

So könnte es z.B. gehen:

Quellcode

1
xterm -iconic -e 'echo -e "\007"'

20

10.08.2010, 20:59

Danke, probier ich gleich mal aus.....

Thema bewerten