• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Einfache Frage zum Starten von Skripts

A

Anonymous

Gast
notoxp schrieb:
Basti8 schrieb:
Der Prozess wird eindeutig gekillt.
Hast du den trap auch in dein Script geschrieben? Falls ja, dann weiß ich's auch nicht, was es sein könnte.
Versuch mal folgendes noch.
Das trap aus dem Script raus nehmen, oder auch zusätzlich noch drin lassen, aber den trap-Befehl in der Bash starten bevor das Script gestartet wird. Damit die Bash, die das Script gestartet hat, weiterläuft, wenn der sshd-Prozess stirbt

abgdf schrieb:
Mal ganz blöd gefragt: Geht das nicht einfach mit einem angehängten "&"
Das schickt den Prozess nur in den Hintergrund, er läuft dort und man hat die bash gleich wieder für den nächsten Befehl frei, allerdings ist er nicht von der Bash entkoppelt und wenn die bash sich beendet wird diesem Prozess das Singnal SIGHUP gesendet. und damit per default Ende

Übrigens wenn du ein script von der Umgebung abhängst, musst du ganz sicher sein, das das script keine Ausgaben oder Fehlerausgaben mehr über die Standardkanäle mehr versendet. die sind nämlich wenn der Vaterprozess tot ist für ihn nicht mehr erreichbar und das script würde eventuell sogar mit Zugriffsverletzung beendet (noch nicht ausprobiert). Also müssen alle möglichen und unmöglichen Ausgaben in Dateien oder nach /dev/null umgeleitet werden, (nohup würde das automatisch machen)



robi
 
Ins Skript hab ichs nicht geschrieben, aber müsste das nicht das gleiche Ergebnis haben, wenn ich den Befehl einfach vorher ausführe?
 
Basti8 schrieb:
Ins Skript hab ichs nicht geschrieben, aber müsste das nicht das gleiche Ergebnis haben, wenn ich den Befehl einfach vorher ausführe?
Bitte ausprobieren. Du hast, wenn ich dich richtig verstehe, 3 Prozesse geschachtelt. Auf Ebene 2 machst du den trap. Auf Ebene 3 läuft dein Script. Und im weiteren Verlauf killst du die Ebene 1 (mit dem Verlassen von PuTTY).

Übrigens bin ich davon ausgegangen, dass du das ins Script schreibst. Aber ich habe es nicht explizit gesagt... :oops:
 
Mal ne ganz blöde Frage, weil ich bisher nur mit YAST gearbeitet habe: Wo finde ich nohup und wie kann ich das über die kommandozeile installieren?
 
Basti8 schrieb:
Mal ne ganz blöde Frage, weil ich bisher nur mit YAST gearbeitet habe: Wo finde ich nohup und wie kann ich das über die kommandozeile installieren?
nohup ist normalerweise in /usr/bin/nohup zu finden. Da es zum Paket "coreutils" gehört, sollte es eigentlich mit der Standard-Installation mitkommen...
 
In der mir zur verfügung gestellten Installation ist es aber wie gesagt leider nicht installiert.
 
Hm. So einfach isses leider nicht. Es ist kein Suse-System, sondern nur irgendsoeine virtuelle linuxbasierte Maschine, von der ich auch keine cd habe.
Mal was anderes: Ich habs versucht, indem ich den trap-befehl ausgeführt habe und die ausgabe des Skripts in /dev/null umgeleitet. Trotzdem funktionierts nicht. macht nohup noch was anderes?
 
Was für ein Linux fährst du denn genau?

Code:
cat /proc/version

Nohup bewahrt ein Script vor dem HANGUP-Signal. So kann es im Hintergrund weiterlaufen, auch wenn der User sich abmeldet.
Zu trap musste ich ehrlich gesagt selber nachschauen, das war mir nicht so geläufig.
 
-bash-3.00# cat /proc/version
Linux version 2.6.17-1.2139_FC4 (bhcompile@hs20-bc1-5.build.redhat.com) (gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)) #1 Fri Jun 23 20:56:41 EDT 2006
 
Puh

FC4 gibt es dafür überhaupt noch Sicherheits Updates?
Mal sehen vielleicht finde ich irgendwo noch eine RPM dazu. :oops:

cu

/Edit:Sorry bisher finde ich nur Pakete die bis FC7 zurückgehen.und die allgemeinen Pakete, aber ich bin kein FC User.

Coreutils
 
whois schrieb:
Zu trap musste ich ehrlich gesagt selber nachschauen, das war mir nicht so geläufig.
Hmmm, das hatten wir weiter oben schon angesprochen. Wenn ich mich recht erinnerne reicht es, wenn man in dem entsprechenden Script folgende Zeile einträgt:
Code:
trap "" 1
 
klappt aber nicht!
wenn ich mich aus der session auslogge (exit) läufts weiter, aber wenn ich den putty schließe, wars das.
 
Basti8 schrieb:
wenn ich mich aus der session auslogge (exit) läufts weiter, aber wenn ich den putty schließe, wars das.
Für mich sieht es so aus, als würdest du den trap auf der falschen Ebene absetzen. Ich habe es bisher so gemacht, dass ich den trap direkt ins script geschrieben habe - aber das habe ich ja bereits weiter oben vorgeschlagen.

Was sind im einzelnen deine Schritte? Könntest du ein reproduzierbares Beispiel posten?
 
Ich hab das jetzt so gemacht, dass ich den trap an den anfang des skripts geschrieben habe und beim starten des skripts "> /dev/null" mit angegeben habe.
 
Das Skript will ich eigentlich nicht hier reinstellen, weil ich es nicht geschrieben habe. Aufrufen tu ich es ./skriptname.sh > /dev/null.
 
Basti8 schrieb:
Ich hab das jetzt so gemacht, dass ich den trap an den anfang des skripts geschrieben habe und beim starten des skripts "> /dev/null" mit angegeben habe.
Funktioniert es jetzt?

Basti8 schrieb:
Das Skript will ich eigentlich nicht hier reinstellen, weil ich es nicht geschrieben habe. Aufrufen tu ich es ./skriptname.sh > /dev/null.
Naja, ich mache es immer so, dass ich das Problem einkreise und auf wenige Befehle reduziere. In deinem Fall könntest du ja in das script statt der Verarbeitung einen "sleep 600" einbauen. Der sleep müsste ja bei sonst gleichbleibender Prozesslogik genauso gekillt werden... Aber falls das Problem jetzt behoben ist, wäre ja alles OK.
 
Oben