[Risolto] FILE CRONTAB: come modificarlo?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
omegaub
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 342
Iscrizione: martedì 2 dicembre 2008, 12:50
Desktop: gnome
Distribuzione: Ubuntu 18.04.4 LTS
Sesso: Femminile
Località: Boschi romani

[Risolto] FILE CRONTAB: come modificarlo?

Messaggio da omegaub »

Ciao a tutti!
Ho ancora problemi con il crontab; per la precisione, una volta creato il file di cron, con utente apache perchè da script php, questo viene di volta in volta aggiornato aggiungendo un'altra riga di cronjob ogni volta che viene attivato lo script. Io ho la necessità, invece, di modificare il file ed eliminare la riga corrispondente ad alcune pianificazioni oramai "scadute". Ma questo non mi viene permesso perchè la modifica del file cerco di farla con i comandi del php, quindi come utente apache, anche se il file che attua la modifica lo richiamo dal cron come root. Ho provato a cambiare i permessi sul file di cron (sempre quello che viene salvato in /var/spool/cron/crontabs/) ma così facendo...non si attiva più il cron. Ho provato a creare il file direttamente con i permessi 777, anche utilizzando umask, ma lo stesso il cron non funziona. L'unico modo per farlo funzionare è con i permessi che si crea in automatico quando do il comando (rw-------)

exec(cronta /tmp/crontab)

Come posso risolvere questo problema? Una soluzione che mi è venuta in mente è quella di modificare il file non attraverso i comandi php, quindi come utente apache, ma utilizzando la shell bash, che però non conosco così bene e non so se permette di fare questo tipo di operazioni (cancellazione di una riga che contiene un determinato valore in una determinata posizione).
Qualcuno sa darmi qualche consiglio?
Grazie a tutti in anticipo.

Mic molto, ma molto, ma molto perplessa  ???
Ultima modifica di omegaub il giovedì 3 marzo 2011, 18:13, modificato 1 volta in totale.
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6033
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: FILE CRONTAB: come modificarlo?

Messaggio da difesaparcosempione »

avevo già risolto questo problema in altre discussioni.
Se devi cambiare la crontab dell'utente
crontab -e
se vuoi farlo per root
sudo crontab -e

ciao
8)
Avatar utente
garak
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1653
Iscrizione: lunedì 13 giugno 2005, 13:37
Desktop: Gnome
Distribuzione: Ubuntu 24.04
Sesso: Maschile
Località: Roma
Contatti:

Re: FILE CRONTAB: come modificarlo?

Messaggio da garak »

Ma perché invece non ribalti la logica?
Metti in crontab un solo script php, eseguito ogni minuto (o comunque ogni intervallo minimo richiesto).
Poi da php puoi gestire tutto quello che vuoi.
Avatar utente
omegaub
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 342
Iscrizione: martedì 2 dicembre 2008, 12:50
Desktop: gnome
Distribuzione: Ubuntu 18.04.4 LTS
Sesso: Femminile
Località: Boschi romani

Re: FILE CRONTAB: come modificarlo?

Messaggio da omegaub »

<< Ma perché invece non ribalti la logica?

Il problema è che quello script una volta deve essere avviato ogni volta in tempi diversi e per ogni utente, mi spiego meglio:
un utente vuole inviare 10 messaggi, uno ogni 10 minuti
un altro utente vuole inviare 5 messaggi, uno ogni 3 minuti
.... e via di seguito

Attraverso uno script php creo un file di cron da www-data che viene aggiornato di volta in volta in funzione della volontà dell'utente, (perchè purtroppo diversamente non mi fa fare, cioè file di cron con nome stabilito da me non funzionano!) quindi i parametri che riceve il cron sono due: intervallo di tempo e id utente.
Il problema finale è che una volta inviati i tot messaggi dell'utente x, questa riga (*/min * * * * php script.php x) dal /var/spool/cron/crontabs/www-data deve sparire. Ed è qui che non funziona: la modifica del file cercho di farla sempre attraverso un altro script php ma non mi permette di farlo. Se cambio i permessi al file non funziona più il crontab anche se lo script lo richiamo come sudo (ma giustamente l'utente php è apache che cerca di modificare il file).
Qualcuno ha un suggerimento?
Creare un file di cron per ogni utente (non macchina ma del sito) quindi affidandogli il nome stesso dell'utente (es: /var/spool/cron/crontabs/utente) sarebbe la soluzione ideale, il problema è che non funziona il crontab, qualcuno sa dirmi perchè?

Mic sempre più perplessa
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: FILE CRONTAB: come modificarlo?

Messaggio da Zoff »

omegaub ha scritto: << Ma perché invece non ribalti la logica?

Il problema è che quello script una volta deve essere avviato ogni volta in tempi diversi e per ogni utente, mi spiego meglio:
un utente vuole inviare 10 messaggi, uno ogni 10 minuti
un altro utente vuole inviare 5 messaggi, uno ogni 3 minuti
.... e via di seguito
Beh basta mettere delle condizioni nello script.
Del tipo: "se è l'utente X e il numero di minuti è multiplo di 5 richiama la tal funzione"

Lo si può fare benissimo no?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
garak
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1653
Iscrizione: lunedì 13 giugno 2005, 13:37
Desktop: Gnome
Distribuzione: Ubuntu 24.04
Sesso: Maschile
Località: Roma
Contatti:

Re: FILE CRONTAB: come modificarlo?

Messaggio da garak »

omegaub ha scritto: << Ma perché invece non ribalti la logica?

Il problema è che quello script una volta deve essere avviato ogni volta in tempi diversi e per ogni utente, mi spiego meglio:
un utente vuole inviare 10 messaggi, uno ogni 10 minuti
un altro utente vuole inviare 5 messaggi, uno ogni 3 minuti
.... e via di seguito
Appunto, supponiamo che tu abbia 3 tempi di invio (puoi facilmente estendere): ogni minuto, ogni ora, ogni giorno.
Se tu memorizzi, per esempio in un database mysql, in un campo "tempo" i valori "minuto", "ora", "giorno" (oppure memorizzi un intero in minuti, quindi 1, 60, 1440), puoi lanciare ogni minuto lo script col parametro che ti consente di recuperare gli utenti con valore "minuto", ogni ora gli utenti con valore "ora" ecc. ecc.
Avatar utente
omegaub
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 342
Iscrizione: martedì 2 dicembre 2008, 12:50
Desktop: gnome
Distribuzione: Ubuntu 18.04.4 LTS
Sesso: Femminile
Località: Boschi romani

Re: FILE CRONTAB: come modificarlo?

Messaggio da omegaub »

Hai ragione, l'idea è geniale, non vorrei che appesantisse troppo l'applicazione, comunque la provo subito. GRAZIE!!

Mic di nuovo fiduciosa  ;D
Avatar utente
omegaub
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 342
Iscrizione: martedì 2 dicembre 2008, 12:50
Desktop: gnome
Distribuzione: Ubuntu 18.04.4 LTS
Sesso: Femminile
Località: Boschi romani

Re: FILE CRONTAB: come modificarlo?

Messaggio da omegaub »

Risolto, GRAZIE!! Spero soltanto non appesantisca troppo l'applicazione, lo vedremo in seguito.

Mic molto, ma molto, ma molto felice  ;D  (rotfl)  (b2b)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite