[Risolto] FILE CRONTAB: come modificarlo?
- omegaub
- 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?
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 ???
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.
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6033
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: FILE CRONTAB: come modificarlo?
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

Se devi cambiare la crontab dell'utente
crontab -e
se vuoi farlo per root
sudo crontab -e
ciao
- garak
- 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?
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.
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.
- omegaub
- 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?
<< 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
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
Re: FILE CRONTAB: come modificarlo?
Beh basta mettere delle condizioni nello script.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
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
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
- garak
- 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?
Appunto, supponiamo che tu abbia 3 tempi di invio (puoi facilmente estendere): ogni minuto, ogni ora, ogni giorno.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
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.
- omegaub
- 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?
Hai ragione, l'idea è geniale, non vorrei che appesantisse troppo l'applicazione, comunque la provo subito. GRAZIE!!
Mic di nuovo fiduciosa
Mic di nuovo fiduciosa
- omegaub
- 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?
Risolto, GRAZIE!! Spero soltanto non appesantisca troppo l'applicazione, lo vedremo in seguito.
Mic molto, ma molto, ma molto felice
(rotfl) (b2b)
Mic molto, ma molto, ma molto felice
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 1 ospite
