Prozesse in den Hintergrund verfrachten

  • Hallöchen,


    gibt es denn eine Möglichkeit Prozesse ordentlich in den Hintergrund zu bekommen. Und um es noch etwas anspruchsvoller zu gestalten, soll das Ganze z.B. mit Putty von jeder beliebigen Remote-Kiste von statten gehen können. Allerdings darf der Prozess beim Beenden von Putty (oder der Shell) nicht gekillt werden.


    Als Beispiel:

    Code
    # im Hintergrund pingen
    ping -c 1000 www.vdr-portal.de &


    Nun kommt die Ausgabe aber nach wie vor auf den Bildschirm und der Prozess wird beim Beenden von Putty ebenfalls beendet.


    Wie kann man Prozesse in den Hintergrund schicken und deren Ausgabe nicht auf dem Bildschirm wiedergeben? Sie aber dann jedoch wieder in den Vordergrund mit der Ausgabe auf den Bildschirm holen?


    TIA!

  • Google mal nach "screen", damit geht so was. Kann mir allerdings die syntax nicht so richtig merken, da muss man sich ne Zeit mit beschäftigen....


    Grüße, Peter

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

  • Zitat

    Originally posted by lini
    screen?
    kann nur das:
    screen - screen manager with VT100/ANSI terminal emulation


    Das Tutorial hatte ich mir mal gebookmarked:


    Screen: Usage and Technics


    Gibt aber auch ein paar threads hier im Portal dazu

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

  • Vielleicht findet sich auch unter dem Stichwort bzw. dem Befehl "nohup" was.


    Viele Grüße
    High

    Wohnzimmer: ASRock N68PV-GS, AMD Athlon X2 BE-2400, DVB-S2 Budget TechnoTrend S2-1600 DVB-S, ASUS GT610-SL-1GD3L GeForce GT 610 Silent, Atric IR Einschalter über COM, 2,5" HDD, yavdr 0.5
    in Gehäuse: Silverstone Milo ML03
    an TV: Sony KDL-55W805C
    ehemals: Wohzimmer: Easyvdr, P3 933 Mhz, DVB-C FF 2.1, DVB-S2 Budget, DVB-S Budget, 250 + 500 Gbyte HDD

  • Hi,


    normalerweise sollte ein & am ende der Zeile den Prozess in den Hintergrund schicken.
    Mache ich oft, wenn ich etwas per wget runterlade, danach beende ich Putty und wenn ich später nachschaue ist die Datei fertig geladen..


    Bei einem Ping schein das nicht zu funktionieren, warum kann ich Dir leider nicht sagen.


    MfG
    Daniel

  • lostinspc
    Vielen Dank für den Hinweis auf screen. Werde mich damit am Wochenende etwas eingehender befassen.


    lini
    Bist du sicher, dass ich mich wieder auf den Prozess aufschalten kann, wenn die Shell-Session einmal beendet wurde? Ich meine jetzt nicht nur killen oder warten bis der Prozess durch ist. Sondern auch die jetztige Ausgabe des Prozesses mir auf den Schirm holen.

  • Pack das mal


    Code
    2>&1 > /dev/null


    hinter deinen Ping Aufruf aber vor das &

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

  • aber wozu sollte man sich ein wrapper script schreiben wenn man die darin benutzte Befehlsfolge auch gleich auf der shell nutzen kann?


    Und zur eigentlichen Frage:
    Wenn man den Prozess vom terminal trennen will (also auch ohne die Möglichkeit später die Eingabe zu kontrollieren) ist "nohup" das richtige (in den Hintergrund will nohup aber trotzdem noch mit & geschoben werden)


    Wenn man später wieder eine Eingabe machen muß/will ist screen genau das Richtige, allerdings sollte man sich vorher die Infos durchlesen und die Tastenkombinationen (zB Ctrl-A D) verinnerlicht haben.



    Übrigens kann man auch jederzeit einen laufenden Prozess in den Hintergrund schieben (wenn man zB das "&" vergessen hat):
    Strg-Z pausiert den Prozess, danach einfach "bg %1" und das Ganze läuft im Hintergrund weiter (so als wenn man den Prozess mit "&" gestartet hätte)


    Edit: lini: Es gibt übrigens sehr wohl einen Untrschied zwischen nohup und einem einfachen >/dev/null &. Wenn nämlich die Bash beendet wird bekommt der nach laufende Prozess (ist ja ein child) auch ein Signal (weiß jetzt nicht genau welches), was einige Programme dazu veranlaßt sich ebenfalls zu beenden. Mit nohup ist man auf der sicheren Seite da das ausgeführte Programm von vornherein vom ausführenden Terminal getrennt ist. Außerdem sollte man bei ">/dev/null" nicht vergessen, dass dies nur stdout (normale Ausgaben) und nicht stderr (Fehlermeldungen) umfaßt, komplett wäre also ">/dev/null 2>&1 &"

  • Zitat

    zurückholen kann man aber mit nohubebenso nicht!!!


    siehe man nohup: nohup - Ein Kommando immun gegen Aufhängen laufen lassen, mit Ausgabe in ein Nicht-Terminal.
    Wichtig dabei mit Ausgabe in ein Nicht-Terminal. D. h. die ganze Ausgabe geht in eine Datei nohup.out (oder so ähnlich). Anschauen mit tail -f nohup.out.


    "Zurückholen" ist damit kein Problem, wenn du z. B. schauen willst was dein ping Befehlt macht bzw. gemacht hat.
    Allerdings musst du dabei >/dev/null 2>&1 von dem Befehl weglassen, da ja ohnehin davon nichts zu sehen ist. Wenn du das dagegen an den Befehl anhängst dann gibts auch keine Ausgabe in eine Textdatei.


    Zitat

    somit das fast das selbe wie ein wrapper-script


    Mit einem wrapper-script hat der nohup-Befehlt nichts zu tun!


    Razorblade hat dir eine äußerst genaue Antwort gegeben.


    Nohup bringt Dir genau den Effekt den du wolltest. Wenn du mehr willst dann schau dir GNU Screen an. Ist echt ein super App! ;)


    Schöne Grüße

  • Also Screen ist das perfekte Tool. Und eigentlich auch recht einfach zu bedienen, dank des Links von lostinspc. Vielen Dank nochmal an alle.


    Vielleicht hilft dem einen oder anderen eine Zusammenfassung der benötigten Befehle:

    Code
    screen -DRU      # screen starten bzw. um entkoppelte Fenster wieder aktiv zu schalten
    ctrl+a, c        # für ein neues Fenster
    ctrl+a, w        # für eine Liste vorhandender Fenster
    crtl+a, <n>      # zw. den Fenstern umschalten
    ctrl+a, d        # entkoppelt alle Fenster vom Terminal, um im Hintergrund auch
                     # nach dem Beendigen den Terminals weiterlaufen zu können
    ctrl+a, ?        # Hilfe
    ctrl+a, k        # Fenster schließen
  • Oder screenie - als "Mini-GUI" für screen...


    Marcus

    My VDRs:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!