Hallo,
Das "Original" zu diesem Thread liegt übrigens hier.
Manchmal macht es Sinn ein Programm aus der shell zu starten, um z.B. eventuelle Fehlermeldungen lesen zu können. Wie kann man aber ein Programm, welches aus der shell gestartet wurde, nach Schließen des Konsolenfensters weiterlaufen lassen?
Hier am Beispiel des Texteditors kate:
das "&" hat die Funktion, daß das Programm im Hintergrund läuft und man in der shell normal weiterarbeiten kann.
Würde man nun die shell schliessen, würde in den meisten Fällen auch das gestartete Programm mit "abgeschossen". Deshalb nicht das Fenster schliessen, sondern sich ordentlich aus der Konsole abmelden.
Alternativ auch STRG-D.
- Und wenn man das "&" vergessen hat?
Ganz einfach.
Man drückt die Tastenkombination STRG-Z. Dadurch wird das Programm angehalten (Probierts mal aus!). Nun gibt man
ein und das Programm läuft im Hintergrund (bg=Background) weiter, Rest wie gehabt.
- Und wie hole ich ein Programm wieder in den Vordergrund?
Muss man nicht weiter erklären, oder?
- Und wenn man mehrere Programme aus der selben Shell gestartet hat und ein bestimmtes in den Vordergrund holen will?
Nichts leichter als das, hierzu hilft der Befehl "jobs".
Machen wir mal ein Beispiel, anhand der beiden Programme kate und gedit.
(Man kann also auch ein Leerzeichen machen nach dem Befehl)
Code:
User@Rechner:~$ kate &
[1] 10280
gedit&
[2] 10282
User@Rechner:~$ jobs
[1]- Running kate &
[2]+ Running gedit &
Beide laufen im Hintergrund, nun holen wir kate nach vorne, das geschieht mit fg und Aufruf der Jobnummer.
Die Nummern hinter den Klammern sind übrigens die sogenannten PID (=Process ID) die man zum "Abschiessen" eines Prozesses mit dem Befehl "kill" verwenden kann. Will man Prozesse nach Namen abschiessen dann geht das mit dem Befehl "killall Programmname". ACHTUNG, da man nach Namen "abschiesst", werden logischerweise ALLE Programme dieses Namens abgeschossen. Woher sollte das System auch wissen, welches man meint, wenn mehrere Prozesse den selben Namen haben? Dafür gibt es dann das killen mit PID, die ist IMMER eindeutig.
Code:
User@Rechner:~$ fg 1
kate
Da wir nun nichts tippen können, stoppen wir kate mit STRG-Z, schicken es nach hinten und holen anschliessend gedit nach vorne.
Code:
[1]+ Stopped kate
User@Rechner:~$ bg
[1]+ kate &
User@Rechner:~$ fg 2
gedit
Nett oder? Jetzt stoppen wir gedit, holen kate nach vorne und beenden kate mit STRG-C, danach holen wir gedit nach vorne und beenden es ebenfalls mit STRG-C.
Code:
[2]+ Stopped gedit
User@Rechner:~$ bg
[2]+ gedit &
User@Rechner:~$ fg 1
kate
User@Rechner:~$ fg 2
gedit
User@Rechner:~$
Greetz,
RM
Lesezeichen