mikrocontroller.net

Forum: PC-Programmierung Service soll im aktiven Terminal schreiben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Linux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe eine Python application geschrieben, diese wird beim starten 
meines Raspi als Service gestartet. Mein Problem ist nun folgendes. 
Dieses Programm soll auf die aktuelle Console zugreifen und die Daten 
auf der Console ausgeben. Da ich nicht genau weiß wonach ich googlen 
soll, wollte ich mal hier im Forum nachfragen. Wie kann ich mein Problem 
lösen?

Autor: Besser Anonym (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du könntest die Daten in eine Logdatei schreiben und von der Console aus 
mit tail die Datei anzeigen

Autor: foobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die aktuelle Console ist /dev/console. Gerne wird die Log-Ausgabe von 
Hintergrundprozessen aber auf eine bestimmte Console ausgegeben, z.B. 
/dev/tty7 (die 7. Console), damit die Ausgaben nicht die Arbeit auf der 
aktuellen Console ständig behindern.

Autor: DPA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich nicht genau weiss, was du vorhast, versuche ich mal möglichst 
viele use-cases abzudecken.

Wenn du wirklich nur auf die aktuelle Konsole schreiben willst, schaue 
dir /dev/console, /dev/tty0 an. Vermutlich willst du /dev/console. Das 
ist die selbe, auf der der Kernel manchmal nachrichten auf die Konsole 
raus schreibt. Sofern man das nicht auf eine Serielle Schnittelle oder 
so umleitet, ist das in der regel das selbe wie /dev/tty0. /dev/tty0 ist 
immer das das momentan ausgewählte /dev/ttyX. Die und die vtX sind 
wiederum ist in der regel von fbcon, und werden davon über die 
Framebuffer auf dem Bildschirm angezeigt.

In deinem Programm kannst du übrigens auch standard input/output/error 
zur Laufzeit auf ein tty umleiten. Die filedeskriptoren für in/out/err 
sind 0/1/2, einfach tty öffnen und dup2(ttyfd, 0), usw. Oder in python 
vermutlich "sys.stdout = open('/dev/console', 'rw')" oder so.

Einige hier womöglich nützliche Tools sind:
 - chvt - auf ttyX anzeigen.
 - con2fbmap - zuordnung von ttyX und fbX ändern.
 - openvt - Kommando auf erstem ungenutztem tty anzeigen.
 - stty - Terminalsettings anpassen/auslesen

Prozesse, die immer auf einem bestimmten tty laufen sollen, kann man in 
sysV kompatiblen Systemen /etc/inittab eintragen. Bei systemd hingegen 
gibt es dafür wie immer units, schaue dir getty@.service an. Schau dir 
generell mal getty, agetty und co. an, falls du sowas vor hast.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.