Non eseguire cron se in esecuzione

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
viro
Prode Principiante
Messaggi: 137
Iscrizione: mercoledì 14 luglio 2010, 17:55
Sesso: Maschile

Non eseguire cron se in esecuzione

Messaggio da viro »

Salve a tutti, ho un problema, in quanto ho un cron che richiama uno script in php che importa oltre 100 file csv sul mio sito, la problematica è che questo script potrebbe andare in timeout e quindi non riesce a terminare il processo d'importazione, per risolvere questo problema, dovrei implementare un'altro cron che controlla ogni 2 minuti se il cron è in esecuzione o meno, quindi se in esecuzione non esegue alcuna operazione, mentre se non è in esecuzione riavvia lo script per procedere l'importazione dall'ultimo id importato (che ovviamente mi salvo ad ogni fine importazione).

Quindi come potrei fare per controllare se il cron è in esecuzione o meno?

Grazie
Avatar utente
Alien321
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1390
Iscrizione: sabato 20 maggio 2006, 20:39
Desktop: KDE 5.16.4
Distribuzione: KDE Neon
Località: Venere

Re: Non eseguire cron se in esecuzione

Messaggio da Alien321 »

viro [url=http://forum.ubuntu-it.org/viewtopic.php?p=4421729#p4421729][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Salve a tutti, ho un problema, in quanto ho un cron che richiama uno script in php che importa oltre 100 file csv sul mio sito, la problematica è che questo script potrebbe andare in timeout e quindi non riesce a terminare il processo d'importazione, per risolvere questo problema, dovrei implementare un'altro cron che controlla ogni 2 minuti se il cron è in esecuzione o meno, quindi se in esecuzione non esegue alcuna operazione, mentre se non è in esecuzione riavvia lo script per procedere l'importazione dall'ultimo id importato (che ovviamente mi salvo ad ogni fine importazione).

Quindi come potrei fare per controllare se il cron è in esecuzione o meno?

Grazie
Ma, io farei uno script in bash una cosa di questo tipo:
  • controllo se cìè un file di lock in /tmp
  • se il file c'è non faccio nulla e esco
  • se il file non c'è lo creo, magari dentro metto il mio pid per scrupolo
  • eseguo lo script php
  • cancello il file di lock in /tmp
Giusto per dare un idea puoi scrivere lo script anche in Python se preferisci
Spoiler
Mostra
Finalmente è finito carnevale, anche se vedo ancora gente in maschera
toma.luca95
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 750
Iscrizione: giovedì 25 febbraio 2010, 19:32

Re: Non eseguire cron se in esecuzione

Messaggio da toma.luca95 »

Io ti consiglio di scrivere uno script bash che leghe riga per roga del CSV e la invia (eviti sicuramente problemi di timeout) con un file di lock che evita la possibilità che due processi vadano a sovrapporsi.
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite