Hallo,
wenn ich einem Skriptaufruf ein & anhänge, läuft das Skript auch dann weiter, wenn ich mich direkt vom Linux auslogge? Oder wird das Skript beendet, wenn ich mich abmelde?
Gruß. A
wenn ich einem Skriptaufruf ein & anhänge, läuft das Skript
auch dann weiter, wenn ich mich direkt vom Linux auslogge?
Oder wird das Skript beendet, wenn ich mich abmelde?
Nein, der Logout beendet Deine Prozesse, es sei denn Du startest sie mit nohup
http://de.linwiki.org/wiki/Linuxfibel_-_Nutzerkomman…
Hallo Anja,
wenn ich einem Skriptaufruf ein & anhänge, läuft das Skript
auch dann weiter, wenn ich mich direkt vom Linux auslogge?
Interessante Frage, meine Antwort ist aber im Moment wie von Radio Jerewan, „Im Prinzip ja, aber…“
Spontan wollte ich sagen, das Skript beendet sich, wenn Du dich ausloggst, weil es dann ein Signal SIGHUP empfängt und sich daraufhin beendet. Damit es weiterläuft bedarf es nohup, also sowas:
nohup ./meinSkript &
So habe ich es jedenfalls gelernt und so sagt es eigentlich auch alles, was Google findet. Jedoch kommt jetzt das Aber:
Ich habe experimentiert, ein Skript ohne nohup in den Hintergrund geschickt, mich ausgeloggt, und … Trommelwirbel … das Skript läuft weiter!
Warum das so ist, wo die Diskrepanz zum Gelernten, was ich da übersehen habe, das wüsste ich gern. Kann ja vielleicht einer der Linux-Experten beantworten…
Viele Grüße
Marvin
Ich habe experimentiert, ein Skript ohne nohup in den
Hintergrund geschickt, mich ausgeloggt, und … Trommelwirbel
… das Skript läuft weiter!
Warum das so ist, wo die Diskrepanz zum Gelernten, was ich da
übersehen habe, das wüsste ich gern. Kann ja vielleicht einer
der Linux-Experten beantworten…
Forscher- und Entdeckerwerkeug:
pstree -pu
Ich bin ja auch ein Freund von „screen“ für die Aufgabenstellung.
HTH,
Sebastian
Hallo Sebastian,
pstree -pu
Vielen Dank, aber ich habe schon mit ps (und auch mit pstree) nachgesehen. Da kommt auch nur raus, daß der Prozess mir gehört. Nach dem Ausloggen hat er natürlich kein Terminal mehr, aber das ist ja nicht wirklich überraschend
Um meinen Fehler(?) schneller zu finden, poste ich hier einfach mal mein verwendetes Skript:
typeset -i i=0
while true; do
echo $i
i=$i+1
sleep 5
done
obwohl das ja eigentlich egal sein dürfte…
Viele Grüße
Marvin
Warum das so ist, wo die Diskrepanz zum Gelernten, was ich da
übersehen habe, das wüsste ich gern. Kann ja vielleicht einer
der Linux-Experten beantworten…
Da die gerade aus sind muesst ihr wohl die man page zu eurer shell befragen und ich mutmasse, dass das *trommelwirbel* die bash ist. Die dort suchbaren Begriffe duerften SIGHUP und direkt daraus schliessbar huponexit sein. Dummerweise schweigt sich dieser Dreckshaufen, der sich Dokumentation schimpft ueber defaults aus, wo ich dann mit dem experimentieren beginne:
(0) frank@hugin [~] % bash -c 'shopt huponexit'
huponexit off
(1) frank@hugin [~] %
Soviel zum SIGHUP beim Verlassen der shell.
HTH,
Gruss vom Frank.
Hallo Der Frank,
Da die gerade aus sind
ist immer so mit den Experten, wenn man sie am dringendsten braucht sind sie meistens nicht da
Aber zum Glück gibt es ja noch Den Frank, der das richtige Zauberwort nennt
huponexit
und tatsächlich, ein beherztes
shopt -s huponexit
lässt anschliessend SIGHUP durch, und der Prozess ist beim logout gekillt.
Wieder was dazugelernt, mindestens die Existenz von shopt, huponexit und einem Dutzend anderer Shellvariablen, von denen ich nicht die Spur einer Ahnung hatte, obwohl sie tatsächlich alle in der man-page erwähnt werden.
Also doch das tun, was man gern anderen predigt
RTFM
Passt ja auch zum Spruch
dieser Dreckshaufen, der sich Dokumentation
schimpft
obwohl da ja nichts verschwiegen wurde, bis auf die default-Werte, aber die sieht man dann schnell mit
shopt
wenn man’s denn dann weiss, was ja nun Dank Dem Frank endlich der Fall ist.
„Wenn man soviel Gutes erfährt, ist es schon ein Sternchen wert…“
Viele Grüße
Marvin
Hallo,
wenn ich einem Skriptaufruf ein & anhänge, läuft das Skript
auch dann weiter, wenn ich mich direkt vom Linux auslogge?
Oder wird das Skript beendet, wenn ich mich abmelde?
Gruß. A
Interessant wird es auch, wenn das Skript/Programm irgendwann
versucht, von der Standardeingabe zu lesen oder etwas
auszugeben.
Mit dem Aufruf
$\> nohup scriptname & ausgabe &
überlässt man stdin, stdout und stderr
nicht dem Zufall.
Grüße
CMБ
Hallo Semjon Michailowitsch,
Mit dem Aufruf
$> nohup scriptname & ausgabe &
überlässt man stdin, stdout und stderr
nicht dem Zufall.
Naja, mit nohup muss man sich über die Ausgabe weniger Gedanken machen, weil die dann in die Datei nohup.out umgeleitet wird.
Und mit stdin ist es eh ein wenig schwierig wenn der Prozess im Hintergrund läuft
Viele Grüße
Marvin
Hallo
$> nohup scriptname & ausgabe &
Naja, mit nohup muss man sich über die Ausgabe weniger
Gedanken machen, weil die dann in die Datei nohup.out
umgeleitet wird.
Und mit stdin ist es eh ein wenig schwierig wenn der Prozess
im Hintergrund läuft
Vorsicht kann angebracht sein, wir hatten das …
==> http://www.snailbook.com/faq/background-jobs.auto.html
Grüße
CMБ
Hallo Semjon Michailowitsch,
Vorsicht kann angebracht sein, wir hatten das …
==> http://www.snailbook.com/faq/background-jobs.auto.html
Gut, ich will da auch keine Diskussion anfangen, zumal Vorsicht immer gut ist. Aber zumindest wird in dem Beitrag eben kein nohup verwendet. Aber klar, die Ausgabe-Umleitung von Hintergrundprozessen ist schon empfehlenswert. So ein Prozess, der einem plötzlich was in die Konsole schreibt, kann schon ziemlich lästig sein
Viele Grüße
Marvin
Hallo
Vorsicht kann angebracht sein, wir hatten das …
==> http://www.snailbook.com/faq/background-jobs.auto.htmlGut, ich will da auch keine Diskussion anfangen, zumal
Vorsicht immer gut ist. Aber zumindest wird in dem Beitrag
eben kein nohup verwendet.
Das ist aber hier nicht entscheidend, vgl.:
http://en.wikipedia.org/wiki/Nohup#Overcoming_hanging
Aber klar, die Ausgabe-Umleitung von Hintergrundprozessen
ist schon empfehlenswert. So ein Prozess, der einem
plötzlich was in die Konsole schreibt, kann schon
ziemlich lästig sein
Wo geht denn im nohup der stderr sonst eigentlich hin?
Grüße
CMБ
Hallo Semjon Michailowitsch
Wo geht denn im nohup der stderr sonst eigentlich hin?
Auch nach nohup.out, was zugegebenermassen nicht so ganz vorteilhaft ist.
Viele Grüße
Marvin
Hallo,
wenn ich einem Skriptaufruf ein & anhänge, läuft das Skript
auch dann weiter, wenn ich mich direkt vom Linux auslogge?
Nein. Im Gegensatz zu den nohup Fans empfehle ich eher die Nutzung von „screen“. Das ist im Lieferumfang jeder mir bekannten Linux-Distribution.
Du kannst Dich dann mit ctrl+a-d „detachen“ und anschließend durch Aufruf von „screen -R“ wieder verbinden.
Genaueres erläutert Dir die Manpage.
Gruß
Fritze