[Risolto] Evitare che lo script venga ri-eseguito se in esecuzione

Bash, Perl, Python, Ruby, ...
Rispondi
levin
Newbie
Newbie
Messaggi: 28
Iscritto il: 04/11/2022, 16:57

[Risolto] Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da levin »

Salve a tutti, siccome mi capita di usare abbastanza spesso un software ocr ho creato uno script, tuttavia, siccome mette un po' in sforzo il pc vorrei evitare che esso possa essere eseguito contemporaneamente su più file: Es. eseguo lo script per il file1.pdf, lo rieseguo per il file2.pdf mentre è ancora in esecuzione lo script per il file1.pdf, come faccio a bloccare l'esecuzione dello script per il file2 continuando quella per il file1 (magari facendo eseguire un suono di avviso della mancata esecuzione per il file2)?
Lo script di base che utilizzo è questo:

Codice: Seleziona tutto

for file; do
	ocrmypdf -l ita "$file" "`basename "$file" .pdf`"_ocr.pdf && paplay /usr/share/sounds/gnome/default/alerts/bark.ogg

done
Ultima modifica di levin il 16/02/2023, 18:38, modificato 1 volta in totale.
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1329
Iscritto il: 03/09/2018, 7:53

Re: Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da azioga »

levin
Newbie
Newbie
Messaggi: 28
Iscritto il: 04/11/2022, 16:57

Re: Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da levin »

Sì, esatto, proprio così.
Ho aggiunto quella riga, però sicuramente ho sbagliato qualcosa nella sintassi perché non si esegue:

Codice: Seleziona tutto

  pidof -o %PPID -x $0 >/dev/null 
  && paplay /usr/share/sounds/gnome/default/alerts/drip.ogg 
  && exit 1
  
for file; do

	ocrmypdf -l ita "$file" "`basename "$file" .pdf`"_ocr.pdf
	&& paplay /usr/share/sounds/gnome/default/alerts/bark.ogg
	
done
Ho provato a leggere anche il link (https://unix.stackexchange.com/question ... 710#398710) nell'articolo che mi hai suggerito, ma non capendone molto non so quale alternativa potrebbe fare al caso mio..
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1329
Iscritto il: 03/09/2018, 7:53

Re: Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da azioga »

Codice: Seleziona tutto

#!/bin/bash

# Check if another instance of this script is running
pidof -o %PPID -x $0 >/dev/null && echo "ERROR: Script $0 already running" && paplay /usr/share/sounds/Oxygen-Sys-App-Error.ogg && exit 1

sleep 10
quest esempio da me funziona.
la riga deve essere una sola, non andare a capo.
levin
Newbie
Newbie
Messaggi: 28
Iscritto il: 04/11/2022, 16:57

Re: Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da levin »

Sì, ora si avvia (lo vedo nei processi in corso), ma non esegue il comando di ocrmypdf.
Non so se cambia qualcosa ma è uno script che utilizzo col tastro destro nella cartella .local/share/nautilus/scripts della home
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1329
Iscritto il: 03/09/2018, 7:53

Re: Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da azioga »

posta script ed errori al terminale
levin
Newbie
Newbie
Messaggi: 28
Iscritto il: 04/11/2022, 16:57

Re: Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da levin »

Ok, eseguendolo da terminale dava lo stesso errore di prima dei comandi su righe diverse per il comando dell'ocr. L'avevo modificato per renderlo più leggibile sul forum ma ho capito che quindi è un errore farlo.
Ora funziona perfettamente, grazie mille!
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1329
Iscritto il: 03/09/2018, 7:53

Re: [Risolto] Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da azioga »

;)
Avatar utente
marcomg
Administrator
Administrator
Messaggi: 8061
Iscritto il: 22/08/2011, 18:54

Re: [Risolto] Evitare che lo script venga ri-eseguito se in esecuzione

Messaggio da marcomg »

Se vuoi andare a capo devi fare l’escape di enter.
~ Marco
Rispondi