Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
21.11.2018, 01:17:06

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 21086
  • Letzte: Pemfakt
Statistiken
  • Beiträge insgesamt: 557526
  • Themen insgesamt: 45114
  • Heute online: 374
  • Am meisten online: 992
  • (17.11.2018, 20:17:55)
Benutzer Online
Mitglieder: 5
Gäste: 306
Gesamt: 311

Autor Thema:  Wie erkenne ich ein laufendes Script in der Übersicht laufender Prozesse?  (Gelesen 667 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Tach,

wie erkenne ich denn ob ein Script grad läuft? Wenn ich eine Datei von einem Video- in ein anderes Videoformat umwandel mit

x264 --preset slower --crf 20 --sar 12:11 --output "output" "input"
sehe ich in der Prozessübersicht logischerweise den Prozess "x264". Wie aber erkenne ich, dass ein Script "x264_tun.sh" diesen Prozess gestartet hat und wie könnte ich verhindern, dass das Script ein zweites mal startet? Ich konnte es jetzt zwar hier nicht reproduzieren, aber ich hatte schon Fälle wo ein Script durch ein Script und dann ein Programm gestartet wurde und ich glaube mich zu erinnern, dass dann alle 3 auftauchten. Ich finde aber unter dem Namen der Scripte nichts.

Ich hab mit KSysGuard gesucht, ist zwar ein KDE-Tool, ich bin aber unter Xfce unterwegs (Mint 19).

Mendelsohn

mit KSysGuard kannst du dir den "eltern prozess" anschauen, das sollte auch bei xfce möglich sein

Dann wäre das Script der Elternprozess für x264? Und der Prozess des Scriptes heißt wie das Script? Kann man den Prozessnamen des Scriptes ändern?


Ja, das geht so. Blöderweise wird die Lockfile nicht gelöscht wenn man - aus welchen Gründen auch immer - das Script vorzeitig abbricht, z. B. indem man einfach das Terminalfenster schließt. Ob das jetzt nun der bevorzugte Weg ist oder nicht sein dahingestellt. Kann man den Fall auch noch mit umsetzen?


Verstehe ich das richtig, dass ich hier trap an den Anfang meines Scriptes setze und einstelle, dass wenn ein bestimmtes Signal kommt (hier das schließen des Terminalfensters und Abbrechen des Prozesses), ein bestimmtes Kommando ausgelöst wird, (hier dann das löschen der Lockfile)?

So ist es.
Zu empfehlen wäre eine Funktion, die den Prozess x264 beendet (nach Prüfung, ob er noch existiert), dann das Lockfile löscht und dann den Script beendet. Die Funktion kann dann durch trap und das reguläre Ende des Scriptes angesprungen werden.

Das Script und der x264-Prozess wird schon durch das schließen des Fensters beendet. Glaube das ist nicht extra nötig.

Was für ein Signal wird denn geschickt, wenn ich das Fenster schließe? Muss ja auch das richtige Fenster sein, heißt schließen von Fenster A bringt ein anderes Signal als schließen von Fenster B.

Ich vermute es wird SIGTERM geschickt, kann mich aber auch irren. Würde sagen Versuch macht klug.

Habe etwas experimentiert und das funktioniert bei mir:
#!/bin/bash
# traptest.sh

echo "PID is $$"

function cleanup {
  echo "TRAPED" > traptest.out
  exit
}

trap cleanup EXIT

while : # This is the same as "while true".
do
        sleep 60 # This script is not really doing anything.
done
Sobald das Terminal geschlossen wird, wird die Funktion "cleanup" aufgerufen.
« Letzte Änderung: 15.09.2018, 01:06:18 von atze »

Das funktioniert bei mir nicht. Wenn ich das so versuche

trap "rm /path/to/file" SIGTERM
x264 --preset slower --crf 20 --sar 12:11 --output "output" "input"

soll eine Datei gelöscht werden, wenn ich das Terminalfenster mit dem kleinen Kreuz oben rechts schließe. Die Datei bleibt aber da. Das gleiche wenn ich trap unter die x264-Zeile setze. Das gleiche wenn ich - wie du - im Script statt SIGTERM EXIT verwende.

Versuchs doch mal so wie ich mit EXIT statt SIGTERM

Hatte ich auch versucht.

Ist denn aber zumindest erstmal die Zeile mit trap vor oder nach der Zeile mit x264 richtig positioniert?

Vor der Zeile mit x264
Kannst du Mal das von mir gepostete Script ausprobieren?

Ja, so scheint es zu gehen. Hatte vorher nicht ganz verstanden was das Script macht. Ich teste das mal weiter aus. Danke dafür.