Você pode usar lsof | grep /absolute/path/to/file.txt
para ver se um arquivo está aberto.
Se o arquivo estiver aberto, este comando retornará o status 0, caso contrário ele retornará 256 (1).
Esteja ciente de que esse comando levará um segundo, pois normalmente há muitos arquivos abertos a qualquer momento.
Você também pode usar lsof -c gedit
, por exemplo, para ver qual arquivo o gedit abriu. Restringir a saída a um processo reduzirá o tempo de execução a praticamente nada.
Aqui está um script para aguardar:
#!/bin/bash
while :
do
if ! [[ 'lsof -c python3.2 | grep test.py' ]]
then
break
fi
sleep 0.5
done
echo "done"
Isso é executado enquanto um processo 'pyhton3.2' possui o arquivo 'test.py' aberto. Assim que o arquivo é fechado, ele passa para 'echo done' e sai.
Eu coloquei 'sleep 0.5' lá dentro para que o loop não sobrecarregasse a CPU. Caso contrário, usará 100% cpu.
Bônus Parece haver uma maneira fácil de conventar o odt para o pdf:
Graças a scls19fr no Fórum OOo para esta linda dica. Você pode converter Arquivos do OpenOffice Writer para PDF de a linha de comando usando
unoconv -f pdf input.odt
Para obter unoconv, basta executarsudo apt-get install unoconv
no terminal. (rhyshale de rhyshale.wordpress.com)