Forum: PC Hard- und Software Raspberry PI.Warum wird der Befehl beim schliessen der Konsole nicht weiter ausgeführt?


von Ression (Gast)


Lesenswert?

Hallo Leute,

Ich wollte das Programm starten was lange benötigt im Hintergrund laufen 
lassen.
Wenn ich aber das Putty Terminal schliesse, wird die Anwendung auch 
geschlossen.
Wie ich das bemerkt habe?
Ein zweites Terminal mit HTOP geöffnet. Programm läuft.
Erstes Terminalfenster, wo das Programm gestartet wird geschlossen. 
Programm ist im HTOP weg :-(
System: Rasperry PI 3
Raspian Jessie
Programm wurde per sudo bash -c " " gestartet
(Brauche ich wegen den Schreibrechten)

Wer kann mir da weiterhelfen?

von TestX (Gast)


Lesenswert?

An den befehl einfach ein "&" anhängen. Dadurch läuft der prozess nicht 
mehr im terminal sondern im Hintergrund.

Das ist jedoch nichts raspberry spezifisches sondern linux Grundwissen

von Pete K. (pete77)


Lesenswert?

Programm starten -> "ctrl-z" drücken -> "bg" eingeben

von nohup (Gast)


Lesenswert?

Man nohup

von Stefan F. (Gast)


Lesenswert?

Das & zeichen führt Prozesse im Hintergrund aus. manche Programme mögen 
es aber gar nicht, wenn das Fenster weg ist, in das sie Ausgaben machen 
wollen. Dann brechen sie ab. Das wiederhum kann man mit "nohup" 
verhindern.

von Paul A. (wandkletterer)


Lesenswert?

man screen

von Exedra (Gast)


Lesenswert?

Mosh wäre auch eine Möglichkeit

von nicht"Gast" (Gast)


Lesenswert?

bin für screen -dmS <screenName> <kommando>

von Ression (Gast)


Lesenswert?

nohup und ein & am Ende bewirkt Wunder :-)

Problem gelöst.Dankeschön :-)

von c.m. (Gast)


Lesenswert?

ich gehe mal auf das "warum" ein.

das programm das du gestartet hast will einen ausgabestream haben, also 
eine konsole, ein terminal, irgendetwas das STDOUT und STDERR 
bereitstellt.
wenn du diesen ausgabestream abwürgst, endet das programm weil es nichts 
mehr wegschreiben kann.

"nohup" bietet diese ausgabestreams an, und du kannst sie in eine (log) 
datei umleiten.
1
nohup "BEFEHL parameter" >/pfad/logfile.txt 2>&1 &

"screen" bietet diese ausgabestreams auch an, du kannst dich aber an die 
ausgabe"screens" mit einer console wieder verbinden.
1
screen -R    #erzeugt neue screen session
2
BEFEHL parameter
3
[CTRL]-a-d   #"detached" screen
4
screen -r    #reattach zu dieser screen session

nohup ist einfacher, screen ist mächtiger :)

von Linux? (Gast)


Lesenswert?

Pete K. schrieb:
> Programm starten -> "ctrl-z" drücken -> "bg" eingeben

nohup schrieb:
> Man nohup

nicht"Gast" schrieb:
> bin für screen -dmS <screenName> <kommando>

Ja das liebe ich so an Linux: Die herrlich einfachen Lösungen. Keine 
drei Stunden des Handbuchlesens später hat man eine Lösung die unter 
Windows einfach so funktioniert. Mit einem Klick.

von klick (Gast)


Lesenswert?

Linux? schrieb:
> Mit einem Klick.

Unter Windows kannst du einfach so mit einem Klick ein Programm starten, 
was nach dem Logout weiterläuft?
Na dann schieß mal los.

von Andreas E. (hismastersvoice)


Lesenswert?

@c.m.:
Ein Teil der Wahrheit fehlt noch, mit der sich der Name nohup erklärt.

Wenn ein Terminal beendet wird, erhalten alle im Terminal gestarteten 
Programme ein SIGHUP (Signal Hang Up). Die Defaul Aktion dafür ist 
terminieren, wenn das Programm es nicht selbst im Code 
abfängt/behandelt.

nohup sorgt dafür, dass das durch nohup gestartete Programm sich nicht 
durch SIGHUP beendet.

von c.m. (Gast)


Lesenswert?

Andreas E. schrieb:
> SIGHUP

TY, garnicht dran gedacht :)

jetzt muss ich direkt mal testen was passiert wenn ich ein script mit 
"trap SIGHUP" in einer konsole starte, und diese dann beende… hmmm?

von Peter II (Gast)


Lesenswert?

Andreas E. schrieb:
> @c.m.:
> Ein Teil der Wahrheit fehlt noch, mit der sich der Name nohup erklärt.
>
> Wenn ein Terminal beendet wird, erhalten alle im Terminal gestarteten
> Programme ein SIGHUP (Signal Hang Up). Die Defaul Aktion dafür ist
> terminieren, wenn das Programm es nicht selbst im Code
> abfängt/behandelt.
>
> nohup sorgt dafür, dass das durch nohup gestartete Programm sich nicht
> durch SIGHUP beendet.

das wird in Zukunft aber nicht mehr reichen.

http://www.golem.de/news/aufraeumen-von-prozessen-beim-logout-systemd-neuerung-sorgt-fuer-nutzerkontroversen-1605-121176.html

von Flo (Gast)


Lesenswert?

Linux? schrieb:
> Ja das liebe ich so an Linux: Die herrlich einfachen Lösungen. Keine
> drei Stunden des Handbuchlesens später hat man eine Lösung die unter
> Windows einfach so funktioniert. Mit einem Klick.

Wenn man keine Ahnung hat, einfach mal ...

von Waidler (Gast)


Lesenswert?

Linux? schrieb:
> Ja das liebe ich so an Linux: Die herrlich einfachen Lösungen. Keine
> drei Stunden des Handbuchlesens später hat man eine Lösung die unter
> Windows einfach so funktioniert. Mit einem Klick.

Du weißt schon, dass es für Linux auch Programme gibt, die man mit einem 
Klick ausführt?
Nur dass Linux über die Konsole viele Möglichkeiten zur Verfügung 
stellt, die unter Windows nicht so ohne weiteres möglich sind. Und für 
dass man bei mächtige Werkzeugen wissen muss, was man tut, ist die 
logische Konsequenz daraus.

Oder kurz gesagt: Einen Phasenprüfer kann man ohne allzu großes 
Hintergrundwissen verwenden, mit einem Oszilloskop am Netz sinnvoll und 
gefahrlos zu messen erfordert wesentlich mehr Wissen...

Gruß von einem Linux-Fan, der trotzdem für bestimmte Aufgaben u.a. 
Windows verwendet und auch schätzt.

von c.m. (Gast)


Lesenswert?

c.m. schrieb:
> Andreas E. schrieb:
>> SIGHUP
>
> TY, garnicht dran gedacht :)
>
> jetzt muss ich direkt mal testen was passiert wenn ich ein script mit
> "trap SIGHUP" in einer konsole starte, und diese dann beende… hmmm?
1
#!/bin/bash
2
trap "echo nope" SIGINT SIGTERM SIGHUP
3
while : 
4
do
5
        sleep 60        
6
done

jop, rennt weiter, lässt sich nur über "kill -9" (SIGKILL) beenden. 
feinerle :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.