Linux 14.981 Themen, 106.344 Beiträge

Batch unter fremden User

heriL / 8 Antworten / Flachansicht Nickles

Hallo, ich brauche nochmal eure Hilfe für ein Batchprogramm.
Das Programm startet u.a. einen Browser, nutzt das read-Kommando und soll unter einer speziellen User-Kennung laufen. Das funktioniert auch, wenn ich es auf einer Konsole von diesem User aus starte. Wenn ich es aber über einen KDE-Desktop-Programmsymbol starte läuft das read-Kommando nicht richtig (der Browser startet korrekt, seit ich "DISPLAY=:0.0" vor den Browser-Aufruf eingefügt habe). Außerdem funktioniert die Kontrolleiste nicht, solange der Batch läuft.

wie kann ich den Fehler beheben oder wo finde ich besser Doku zu diesem "KDE-Desktop-Programmsymbol" ?

Gruß
heriL

bei Antwort benachrichtigen
KarstenW heriL „Batch unter fremden User“
Optionen

Das wird so nicht funktionieren. read ist ein built in Kommando von der bash und kann Daten von der Tastatur einlesen.
Das funktioniert über den Standardeingabekanal. Der Standardeingabekanal ist ein Puffer vom Betriebsystem der automatisch geöffnet wird, sobald ein Programm in der Konsole im Textmodus gestartet wird.

Programme die im Grafikmodus laufen funktionieren anders.
Die Steuerelemente oder Fenster (oder Widgets bei Unix/Linux) senden Signale oder Nachrichten wenn der Benutzer mit dem Programm interagiert, die das jeweilige Programm abfängt und daraufhin eine bestimmte Funktion aufruft.
Also ein Programm welches im Grafikmodus läuft nutzt weder den Standardeingabekanal noch den Standardausgabekanal (auch nicht den Standardfehlerkanal) vom Betriebsystem.

Das Shellscript kann so ein Signal gar nicht abfangen und daraufhin reagieren, weil dazu die Bash nicht in der Lage ist und deshalb kann read keine Daten lesen, die du in einem Fenster im Grafikmodus eingibst.

Wenn du Shellscripte programmierst die Daten von der Tastatur einlesen, dann kannst du dieses Shellscript nur in einem Terminalfenster starten oder in der Konsole.

Du mußt ein richtiges KDE-Programm mit der QT Bibliothek schreiben (vielleicht ein einfaches Dialogfenster (-programm), welches die Daten im Grafikmodus von der Tastatur einlesen kann.
Shellscripte laufen nur in der Konsole (oder in einem Terminalfenster) , im Texmodus .

PS: Das gleiche Problem hast du wenn du ein Batchprogramm für DOS/Windows schreibst. Diese Batchprogramme laufen auch nur in der Eingabeaufforderung unter Windows. Die Eingabeaufforderung bei Windows ist so ein Art Shell oder Kommadointerpreter wie bei Unix/Linux, aber mit weniger Möglichkeiten.

PPS: Unter Linux/Unix schreibt man Shellscripte und keine Batchprogramme wie bei DOS/Windows ;-).

http://www.tldp.org/LDP/abs/html/internal.html








Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen