Seite 1 von 1

eindeutige Prozess ID herausfinden (pidfile)

Verfasst: Fr 24. Feb 2023, 11:00
von mad4schotter
Hallo,

ich möchte aus einem Skript eine Datei öffnen und bearbeiten.
Erst wenn die Datei geschlossen wurde, soll das Skript weitermachen.

Das geht ja ganz gut mir "--pidfile" oder "wait", aber nur wenn das der einzige Prozess von Libreoffice ist.
Wenn nebenbei eine andere Datei geöffnet ist (Writer, Calc, ...) klappt das nicht.

Es wird kein "pidfile" erzeugt und auch kein eigener Linuxprozess.

Wenn keine andere Libreofficedatei geöffnet ist:

Code: Alles auswählen

libreoffice /home/mad4schotter/datei.ods
ps aux | grep soffice | grep -v grep 
mad4schotter   .... /usr/lib/libreoffice/program/soffice.bin --calc /home/mad4schotter/datei.ods
Wenn eine andere Libreofficedatei geöffnet ist:

Code: Alles auswählen

libreoffice /home/mad4schotter/datei.ods
ps aux | grep soffice | grep -v grep 
mad4schotter   .... /usr/lib/libreoffice/program/soffice.bin --calc
Mir ist auch aufgefallen:
Writer öffnen
Calc öffnen

Code: Alles auswählen

ps aux | grep soffice | grep -v grep 
mad4schotter   .... /usr/lib/libreoffice/program/soffice.bin --writer
Calc öffnen
Writer öffnen

Code: Alles auswählen

ps aux | grep soffice | grep -v grep 
mad4schotter   .... /usr/lib/libreoffice/program/soffice.bin --calc
Wie kann ich einzelne Prozesse/Instanzen von Libreoffice steuern?

Vielen Dank!
Schönes Wochenende

Re: eindeutige Prozess ID herausfinden (pidfile)

Verfasst: Fr 24. Feb 2023, 15:21
von karolus
Hallo
soffice kann schon mehrere Instanzen gleichzeitig…… aber nicht mehrmals auf der selben Benutzerkonfiguration lesen und schreiben
Daher müsstest du in deinem Script in etwa ausführen:

Code: Alles auswählen

soffice -env:UserInstallation=file:///home/mad4schotter/neu  /home/mad4schotter/datei.ods
Siehe auch soffice --help

In deinem Script müsstest dann in einer »Warteschleife« testen ob die zugehörige lock-Datei:
/home/mad4schotter/.~lock.datei.ods# noch existiert oder nicht.


Insgesamt sieht dein Arbeitsablauf aber merkwürdig aus… ??

Re: eindeutige Prozess ID herausfinden (pidfile)

Verfasst: Sa 25. Feb 2023, 06:11
von mad4schotter
Hallo,

herzlichen Dank! Das funktioniert perfekt.
Insgesamt sieht dein Arbeitsablauf aber merkwürdig aus… ??
Was meinst du damit? Vielleicht habe ich es unverständlich beschrieben.

Ich habe ein Skript mit dem ich ein Programm zur Zuschnittoptimierung (WoodWorks) steuere.

Code: Alles auswählen

#!/bin/bash

# Woodworks Batch-Dateien verarbeiten
# Schnittplan drucken oder Schnittplan-PDF erzeugen, Etiketten erstellen

# Libreoffice Vorlage auswählen

template=$(zenity --title "Vorlage auswählen" --file-selection --filename "/home/mad4schotter/vorlagen/" --file-filter "*.ots");

libreoffice --pidfile=/home/mad4schotter/woodworks/user/lopid --calc -env:UserInstallation=file:///home/mad4schotter/woodworks $template

# Skript abbrechen, wenn keine Vorlage gewählt wurde

if [ -z "$template" ];
then 
exit 0;
fi

# Batch-Datei auswählen

file=$(zenity --title "Datei auswählen" --file-selection --filename "/home/mad4schotter/" --file-filter "*.xml");

# Skript abbrechen, wenn keine Datei gewählt wurde

if [ -z "$file" ];
then 
exit 0;
fi

.....
Vorher hatte ich für "Libreoffice Vorlage auswählen" eine Abfrage der PID, das hat aber nur funktioniert, wenn Libreoffice noch nicht aktiv war.
Sobald Libreoffice vor dem Start des Skripts geöffnet war, wurde sofort nach Auswahl der Vorlage das nächte Dialogfenster geöffnet (weil eben keine Abfrage einer eindeutigen PID mehr möglich war).

Nochmals herzlichen Dank für deinen Tip!

Schönes Wochenende!