[gelöst]Partition im Skript entsperren und Programm starten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
halo44
Beiträge: 357
Registriert: 12.05.2015 15:19:13

Re: Partition im Skript entsperren und Programm starten

Beitrag von halo44 » 14.02.2018 20:06:54

NAB hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 19:50:40
halo44, mir ist nicht klar, unter welchem Benutzer dein Script überhaupt läuft. Darf dein normaler Benutzer cryptsetup benutzen, oder läuft PortfolioPerformance als root?

Aber wie du ja siehst ... das Programm gibt Text aus. Dazu braucht es "stdout". Nohup leitet stdout in die Datei "nohup.out" um. Findest du diese Datei irgendwo?
Das Skript läuft unter meinem normalen User allerdings mit sudo. In der sudoers habe ich erlaubt, daß das Skript ohne Passworteingabe laufen darf. Damit kann ich cryptsetup und mount im Skript als User ausführen.

Die nohup.out finde ich momentan nicht. Vielleicht muß ich das Skript morgen noch mal mit nohup ausführen. Derzeit hat meine Frau den Notebook in Beschlag.

Bis morgen.

Gruss H.
Debian Stretch-64 KDE (Desktop)
Debian Stretch-64 KDE (Notebook)
Kanotix64 (auf beiden Rechnern)
Debian Stretch-64 armel (NAS)

NAB
Beiträge: 5502
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Partition im Skript entsperren und Programm starten

Beitrag von NAB » 14.02.2018 20:17:27

Dann bau das mal anders auf. Ein Script, das sich nur um's Mounten kümmert. Und nur das bekommt sudo-Rechte.

Dein Desktop-Script ruft dann dieses Script per sudo auf und startet danach den PortfolioPerformance (ohne sudo).
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: Partition im Skript entsperren und Programm starten

Beitrag von breakthewall » 14.02.2018 20:56:58

Zuvor sagtest doch noch, dass das Programm nicht laufen würde?

Wenn das Terminal nach dem Programmstart loswerden willst, dann musst den verantwortlichen Prozess auch beenden. Und da mit exit lediglich das Shellscript selbst beenden würdest, musst denn Mutterprozess selbst beenden.

Das sollte gehen am Ende des Shellscriptes:

Code: Alles auswählen

kill $(paste -sd " " <<< $(ps -o ppid= -C bash)) & disown

halo44
Beiträge: 357
Registriert: 12.05.2015 15:19:13

Re: Partition im Skript entsperren und Programm starten

Beitrag von halo44 » 15.02.2018 09:12:25

NAB hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 20:17:27
Dann bau das mal anders auf. Ein Script, das sich nur um's Mounten kümmert. Und nur das bekommt sudo-Rechte.

Dein Desktop-Script ruft dann dieses Script per sudo auf und startet danach den PortfolioPerformance (ohne sudo).
Bei diesem Versuch in der desktop-Datei startet das Programm, aber auch hier bleibt das Terminal offen:

Code: Alles auswählen

sudo /pfad-zum-Skript && /opt/portfolio/PortfolioPerformance
Gruss H.
Debian Stretch-64 KDE (Desktop)
Debian Stretch-64 KDE (Notebook)
Kanotix64 (auf beiden Rechnern)
Debian Stretch-64 armel (NAS)

halo44
Beiträge: 357
Registriert: 12.05.2015 15:19:13

Re: Partition im Skript entsperren und Programm starten

Beitrag von halo44 » 15.02.2018 09:30:35

breakthewall hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 20:56:58
Zuvor sagtest doch noch, dass das Programm nicht laufen würde?

Wenn das Terminal nach dem Programmstart loswerden willst, dann musst den verantwortlichen Prozess auch beenden. Und da mit exit lediglich das Shellscript selbst beenden würdest, musst denn Mutterprozess selbst beenden.

Das sollte gehen am Ende des Shellscriptes:

Code: Alles auswählen

kill $(paste -sd " " <<< $(ps -o ppid= -C bash)) & disown
Ich habe, wie Du ja im Thread sehen kannst, verschiedene Eurer Vorschläge versucht. Bei allen Versuchen bei denen das Programm läuft, bleibt das Terminal offen. Bei anderen Versuchen startet das Programm nicht und es ist auch kein offenes Terminal vorhanden.

Bei Deinem Vorschlag mit

Code: Alles auswählen

kill $(paste -sd " " <<< $(ps -o ppid= -C bash)) & disown
ist letzteres der Fall, also kein Start des Programms und auch kein offenes Terminal.

Im Journal findet sich nur der Start des Skripts und die Meldung, daß die Partition gemountet ist. Dann wird nur noch die Beendigung der Root-Session gemeldet. Kein Hinweis auf den Start des Programms.

Gruss H.
Debian Stretch-64 KDE (Desktop)
Debian Stretch-64 KDE (Notebook)
Kanotix64 (auf beiden Rechnern)
Debian Stretch-64 armel (NAS)

halo44
Beiträge: 357
Registriert: 12.05.2015 15:19:13

Re: Partition im Skript entsperren und Programm starten

Beitrag von halo44 » 15.02.2018 13:58:25

Das Problem ist gelöst. Da ich noch eine Antwort zum Vorschlag mit nohup schuldig war, habe ich mich jetzt nochmal mit nohup befasst.

Wenn ich, wie vorgeschlagen, dies verwende

Code: Alles auswählen

nohup /opt/portfolio/PortfolioPerformance & disown
dann startet das Programm nicht und auch das Terminal schließt sich nach Eingabe der Passphrase. Auch eine nohup.out wird nicht erstellt.

Lasse ich aber das disown im Befehl weg

Code: Alles auswählen

nohup /opt/portfolio/PortfolioPerformance &
dann startet mein Programm und auch das Terminal bleibt offen. Jetzt aber kann ich das Terminal schließen, ohne daß mein Programm beendet wird.

Die Datei nohup.out wird erstellt, sie enthält nur die zu vernachlässigenden Meldungen
(java:2824): Gtk-WARNING **: Im Modulpfad »adwaita« konnte keine Themen-Engine gefunden werden,

(java:2824): Gtk-WARNING **: Im Modulpfad »adwaita« konnte keine Themen-Engine gefunden werden,

(Portfolio Performance:2824): Gdk-WARNING **: gdk_window_set_icon_list: icons too large
Danke an alle die geholfen haben.

Gruss H.
Debian Stretch-64 KDE (Desktop)
Debian Stretch-64 KDE (Notebook)
Kanotix64 (auf beiden Rechnern)
Debian Stretch-64 armel (NAS)

Antworten