Je suis très nouveau dans le script bash, il est donc possible que je me trompe d'arborescence, mais voici ma situation actuelle:
Dans un script, je commence soffice; convertir un odt en un pdf
Il semble que soffice se détache du processus du script et s'égare pour faire ce qu'il veut. Ok, c'est bon; Les applications graphiques ont tendance à le faire ...
Cependant, je dois attendre que le nouveau pdf soit entièrement écrit, car ma prochaine étape consiste à traiter ce nouveau pdf .
(Pour autant que je sache), je ne peux pas utiliser l'ID de processus de soffice, car il s'agissait peut-être déjà d'un processus en cours d'exécution avant le démarrage de mon script: par exemple. soffice est peut-être déjà ouvert pour une activité graphique normale pour un autre document/présentation/feuille de calcul non associé.
Pour moi, le noeud du problème est qu'avant de pouvoir continuer, l'écriture du nouveau pdf doit être finalisée ...
Existe-t-il un moyen de déterminer quand un fichier est plus maintenant ouvert à un autre processus en mode "écriture"? ...
Vous pouvez utiliser lsof | grep /absolute/path/to/file.txt
pour voir si un fichier est ouvert. Si le fichier est ouvert, cette commande retournera le statut 0, sinon 256 (1).
Sachez que cette commande prendra une seconde car il y a normalement beaucoup de fichiers ouverts à tout moment.
Vous pouvez également utiliser lsof -c gedit
, par exemple, pour voir le fichier ouvert par gedit. En limitant la sortie à un processus, le temps d'exécution sera pratiquement réduit à néant.
Voici un script à attendre:
#!/bin/bash
while :
do
if ! [[ `lsof -c python3.2 | grep test.py` ]]
then
break
fi
sleep 0.5
done
echo "done"
Cela s'exécute tant qu'un processus 'pyhton3.2' a ouvert le fichier 'test.py'. Dès que le fichier est fermé, il passe à "écho terminé" et se termine.
J'ai mis 'sleep 0.5' dedans pour que la boucle n'enlève pas trop le processeur. Sinon, il utilisera 100% de l'unité centrale.
Bonus Il semble y avoir un moyen facile de comprendre le pdf:
Merci à scls19fr sur le OOo Forum pour cette jolie astuce. Vous pouvez convertir les fichiers OpenOffice Writer au format PDF à partir de la ligne de commande à l'aide de
unoconv -f pdf input.odt
. Pour obtenir unoconv, exécutez simplementSudo apt-get install unoconv
sur le terminal. (rhyshale de rhyshale.wordpress.com)