(Tip) Programm nach Schliessen der Konsole weiterlaufen lassen

Status
Für weitere Antworten geschlossen.

Ministry

Member
Hi,
also wie der Titel schon sagt:
Wenn ich ein Programm über die Konsole starte und möchte, dass es nach schliessen der Konsole weiterhin ausgeführt wird, wie gehe ich da vor?

./prog prog.conf <-- so starte ich bisher...funktioniert aber nicht immer.

gruss

Ministry

p.s. Ich wusste nicht so genau, wohin mit diesem Thread....
 

Rain_Maker

Administrator
Teammitglied
AW: Programm laufen lassen, nach schliessen der Konsole

Hallo,

Auf diese Frage habe ich schon ein Weilchen gewartet, das Folgende wollte ich schon lange mal schreiben.

;)

Beispiel (nennen wir das Programm einfach "proggi", OK?)

Code:
proggi&
das "&" hat die Funktion, daß das Programm im Hintergrund läuft und Du noch was tippen kannst.

Danach einfach

Code:
exit
Alternativ auch STRG-D.

Erweiterung:

- 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
Code:
bg
ein und das Programm läuft im Hintergrund (bg=Background) weiter, Rest wie gehabt.

- Und wie hole ich ein Programm wieder in den Vordergrund?

Code:
fg
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.

Code:
kate &
(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:~$
Erstaunlich, was man doch mit sowas "altertümlichem" wie einer Konsole nicht alles machen kann, oder?

Kids, PLEASE TRY this at home!


Greetz,

RM

P.S. www.bin-bash.de & http://www.linuxfibel.de/ zum Einlesen ;)

P.P.S.
Ministry schrieb:
p.s. Ich wusste nicht so genau, wohin mit diesem Thread....
Ich hab da so ne Idee.....*g*
 
Status
Für weitere Antworten geschlossen.
Oben