Am Freitag, 11. Februar 2005 18:51 schrieb Thomas Janssen:
Mein Problem ist jetzt, wenn ich es nun kontrolliert beenden möchte (nicht per kill),
Was spricht gegen kill?
könnte ich das nur in einer Konsole. Doch da taucht das Teil nicht auf. Jobs bringt keine Ausgabe. Gibt es eine Möglichkeit zum Beispiel an Hand der PID (die kriege ich per Top) die Ausgabe des Programmes irgendwie in (m)eine Konsole zu bekommen. Oder sollte ich mein Script abändern das ich die Ausgabe des Programmes (und dadurch den Zugriff) in der Konsole haben kann.
Wie kommst Du auf die merkwürdige Idee, daß Du mit der Ausgabe auch einen Zugriff auf das Programm hast? Wenn schon, dann durch die Eingabe, was was völlig anders ist. Aber die Frage bleibt, was Du unter Zugriff meinst. Die Ausgabe kannst Du einfach durch ein > umlenken und die Eingabe durch ein < programm > /dev/tty1 schreibt auf die erste virtuelle Konsole programm < /dev/tty2 liest von der zweiten virtuellen Konsole programm 2> /dev/tty3 hat die Fehlerausgabe auf die dritte virtuelle Konsole. programm < /dev/tty2 > /dev/tty1 2>/dev/tty3 schreibt auf die erste virtuelle Konsole, liest von der zweiten virtuellen Konsole und hat seine Fehlerausgabe auf die dritte virtuelle Konsole. Allerdings schreibt das Programm wild auf die Konsole, egal ob da einer eingeloggt ist, oder nicht. Das kann ganz schön verwirrend sein, wenn man da was eingibt und ein Programm schreibt irgendwas dazwischen. Da wo man eingibt liest nur das, was man eingegeben hat, von den Geschreibsel des Programms weiß es nichts. Wenn Du zum Beispiel irgend einen Befehl auf der Konsole eingibst und da schreibt dann ein Programm irgendwas anderes auf der Konsole, dann muß Du ganz genau so eingeben was Du auch ohne das Geschreibsel eingegeben hättest. Vor allem darfst Du kein Leerzeichen hinmachen wo keins hingehört. Das ist sehr verwirrend. Also das mit der Ausgabe auf der Konsole ist eine Schnapsidee, es sei Du willst eine Ausgabe verfolgen und willst da ganz bestimmt nicht einloggen, so wie auf /dev/tty10 wo bei SuSE eine Ausgabe des Kernels steht. Aber auch mit der Eingabe ist Essig. Denn entweder das Programm erwartet eine Eingabe, dann muß Du sie auch machen, oder es erwartet keine, dann nützt es nichts, wenn Du eine machst, sie wird nie gelesen. Wenn Du sowas wie CTRL-C meinst, das ist komplizierter, da es da nach Prozeßgruppe und zugeordnete Konsole geht. Viel einfacher ist doch ein kill -2, das macht das gleiche wie ein CTRL-C
Thomas (der versucht seine mickrigen Scriptingkenntnisse aufzubessern)
Hat weniger was mit Scriptkenntnissen zu tun, als mit Kenntnisse von Prozeßabläufe. Vor allem Umlenkung von Ein- und Ausgabe, sowie den Signalmechanismus solltest Du Dich befassen. < > und 2> gehört zwar zur Syntax der Shell, aber dem liegen Systemaufrufe zugrunde, genau wie dem Befehl kill. Bernd Bernd