[gelöst] Programm schließt mit Terminal trotz nohup

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Offerus
Beiträge: 90
Registriert: 22.09.2012 13:04:29

[gelöst] Programm schließt mit Terminal trotz nohup

Beitrag von Offerus » 23.01.2019 13:43:54

Hallo zusammen,

ich möchte eine nemo action anlegen, sodass ich in nemo mehrere Bilder auswählen kann und jedes einzeln (vielleicht in Zukunft auch als "Wiedergabeliste") geöffnet wird. Dazu habe ich unter ~/.local/share/nemo/actions/ die Datei openimage.nemo_action angelegt, die folgendermaßen aussieht:

Code: Alles auswählen

[Nemo Action]
Name=Tag: show images
Comment=show all images seperate 
Exec=<openimage.sh %F>
Icon-Name=document-print
Selection=Any
Extensions=nodirs
Quote=double
Terminal=true
Das ausgeführte Skript openimage.sh sieht momentan so aus:

Code: Alles auswählen

#!/bin/bash

while [ $# -gt 0 ]
do
  FILE="$1"
  FILEEXT=${FILE##*.}
  
  if [ $FILEEXT == "jpg" ]; then
    nohup xdg-open "$FILE" </dev/null &>/dev/null &
    
    #read y
  fi
  shift
done
Die Bilder werden auch korrekt geöffnet, nur schließen sich die Programme wieder, wenn das Terminal geschlossen wird.
Was ich schon versucht habe:
  • nohup bash -c 'xdg-open "$FILE" ' </dev/null &>/dev/null &
  • xdg-open "$FILE" & disown
  • trap "" SIGHUP oben ins Skript einfügen
Nichts davon hat geholfen, die Bilder werden immer mit dem Terminal geschlossen. Wenn ich nohup xdg-open "$FILE" </dev/null &>/dev/null & außerhalb des Skriptes in ein Terminal eingebe kann ich das Terminal schließen, ohne dass das Bild geschlossen wird.
Weiß jemand wie das funktioniert?

Beste Grüße,
Offerus
Zuletzt geändert von Offerus am 23.01.2019 17:31:14, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Programm schließt mit Terminal trotz nohup

Beitrag von heisenberg » 23.01.2019 13:55:21

Du könntest das Programm in Debianscreen laufen lassen.

Beispiel

Start eines Programmes im detached - Modus:

Code: Alles auswählen

screen -d -m bash -c 'for((x=1;x<=20;x++));do date;sleep 10;done'
Verbinden zum Screen:

Code: Alles auswählen

screen -r
Die so gestartete Screen-Sitzung beendet sich, sobald sich das aufgerufene Programm beendet.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Programm schließt mit Terminal trotz nohup

Beitrag von uname » 23.01.2019 14:51:47

Wenn du in openimage.sh das "nohup" aber nicht das "&" weglässt, müssten sich alle Bilder öffnen und das Terminal bleibt offen würde ich mal behaupten. Wenn nicht baue ein "pause" am Ende des Scripts ein. Vielleicht kannst du dann den Aufruf des Terminals (bzw. eigentlich nur das Terminal) mit "&" oder "nohup" oder sonstwie in den Hintergrund schicken. Also im Prinzip das Problem verlagern.

Offerus
Beiträge: 90
Registriert: 22.09.2012 13:04:29

Re: Programm schließt mit Terminal trotz nohup

Beitrag von Offerus » 23.01.2019 15:05:36

@uname: Ich hätte schon gerne, dass sich das Terminal schließt und ich da nicht mehr viel manuell machen muss

@heisenberg
Die idee ist sehr gut. Ich habe mit screen noch nicht gearbeitet, deshalb hab ich da noch ein paar Anlaufschwierigkeiten:

Wenn ich in einem normalen Terminal screen -d -m bash -c 'xdg-open "$FILE"' (bzw. mit konkretem Dateinamen) angebe, kommt keine Fehlermeldung, aber es öffnet sich auch kein Fenster. Ebenso mit screen -d -m xdg-open "$FILE". Wenn ich screen -r danach eingebe, sehe ich aber dass es einen screen gibt, der attached ist. Was funktioniert ist, wenn ich nur screen ausführe und im screen-Interface xdg-open "/pfad/zu/Bild" eingebe. Dann kann ich mit screen -d raus gehen und das Terminal zu machen, ohne dass sich das Bild schließt. Aber ich hab noch nicht rausgefunden, wie ich das im Skript verwende.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Programm schließt mit Terminal trotz nohup

Beitrag von uname » 23.01.2019 15:27:22

Ich bin mir nicht sicher. Aber vielleicht liegt es an DISPLAY und AUTHORITY, wobei ich nicht weiß ob das heute überhaupt noch relevant ist.

Du könntest aber statt Debianscreen mal Debiantmux versuchen, das ähnlich arbeitet. Ist doch um einiges moderner auch wenn man sich als Zehn-Finger-Schreiber mit C-b ähnlich wie bei Debianscreen mit C-a fast die Finger bricht, wobei C-a ja eigentlich gar nicht möglich ist.

Code: Alles auswählen

tmux new -d -s mysession '...'

Code: Alles auswählen

tmux attach -t mysession
https://tmuxcheatsheet.com/

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Programm schließt mit Terminal trotz nohup

Beitrag von heisenberg » 23.01.2019 15:33:11

Du kannst für den Anfang mal mit einer interaktiven Screen-Sitzung beginnen und die Befehle, die Du ausführen möchtest händisch ausführen. Dann siehst Du die Fehlermeldungen. Trennen kannst Du Dich dann per [Ctrl] + [a], [d].
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Programm schließt mit Terminal trotz nohup

Beitrag von heinz » 23.01.2019 15:39:46

Mir scheint es daran zu liegen:
Wenn openimage.sh beendet wird bevor die Bilder geoeffnet sind funktioniert es nicht.
Warum weiss ich leider auch nicht.

Aber bei mir funktioniert es so:

Code: Alles auswählen

#!/bin/bash

while [ $# -gt 1 ]
do
  FILE="$1"
  FILEEXT=${FILE##*.}
  
  if [ $FILEEXT == "jpg" ]; then
    nohup xdg-open "$FILE" </dev/null &>/dev/null &
    
    #read y
  fi
  shift
done

nohup xdg-open "$1" </dev/null &>/dev/null &
sleep 1

Gruss, heinz

Offerus
Beiträge: 90
Registriert: 22.09.2012 13:04:29

Re: Programm schließt mit Terminal trotz nohup

Beitrag von Offerus » 23.01.2019 15:59:06

@uname: Bin gerade dabei mir das anzuschauen, hatte aber noch keine Erfolge
@heinz: Bei mir schließt das Bild dann nach einer Sekunde :/

@heisenberg:
Interaktiv funktioniert es ja mit:

Code: Alles auswählen

screen
xdg-open "/path/to/file"
screen -d
exit
Aber ich weiß nicht, wie ich das ohne Interaktion ins Skript bringe.

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Programm schließt mit Terminal trotz nohup

Beitrag von heisenberg » 23.01.2019 16:11:06

Schreib ein Script, z. B. mit dem Namen "myxdg":

myxdg

Code: Alles auswählen

#!/bin/bash
/usr/bin/xdg-open "/path/to/file"
mach's ausführbar und starte es so:

Code: Alles auswählen

screen -d -m /pfad/zu/myxdg
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Offerus
Beiträge: 90
Registriert: 22.09.2012 13:04:29

Re: Programm schließt mit Terminal trotz nohup

Beitrag von Offerus » 23.01.2019 16:19:15

Das öffnet wieder das Bild nicht. Selbst mit hartgecodetem Pfad zu einem Bild. :?

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Programm schließt mit Terminal trotz nohup

Beitrag von heisenberg » 23.01.2019 16:37:27

und wenn Du ans Ende der myxg noch ein "sleep 600" hängst und dann per screen -r nochmal in der Screen-Sitzung schaust, ob da evtl. eine Fehlermeldung drin steht?
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Offerus
Beiträge: 90
Registriert: 22.09.2012 13:04:29

Re: Programm schließt mit Terminal trotz nohup

Beitrag von Offerus » 23.01.2019 16:42:55

Keine Fehlermeldung, aber mit sleep 600 geht das Bild auf :D

Wenn ich sleep 15 nehme öffnet sich das Bild, ich kann das Terminal schließen, das Bild bleibt geöffnet, schließt sich aber nach 15 Sekunden automatisch.

EDIT: Also ich könnte in dem Skript myxdg sowas machen:

Code: Alles auswählen

#!/bin/bash

/usr/bin/xdg-open "$1"

while true; do
  sleep 600
done
Aber dann bleibt der screen für immer aktiv.

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Programm schließt mit Terminal trotz nohup

Beitrag von heisenberg » 23.01.2019 17:25:15

Ich würde Dir das als vorläufigen workaround vorschlagen:

Code: Alles auswählen

#!/bin/bash

/usr/bin/xdg-open "$1"
sleep 3600
Also 1 Stunde. Das sollte wohl für alles genügen. Wenn nicht: noch höher setzen. Und da verschwinden die Screen-Sessions dann auch irgendwann wieder.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Offerus
Beiträge: 90
Registriert: 22.09.2012 13:04:29

Re: Programm schließt mit Terminal trotz nohup

Beitrag von Offerus » 23.01.2019 17:30:52

Ja das ist eine gute Lösung für mich, danke :THX:

Antworten