Pagina 1 di 7 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 70
  1. #1

    Pillola? Guida a Crontab

    Avevo bisogno di automatizzare lo spider del mio motore di ricerca.
    Siccome non ho trovato nulla facendo una ricerca nel forum, ho messo insieme una specie di guida, che trovate impaginata meglio qui: http://www.diludovico.it/cron.shtml

    Cos'è "Cron/Crontab" ???

    * una risposta alle preghiere dei webmaster
    * una specie di sveglia per il server
    * uno strumento per la manutenzione automatica

    Requisiti:

    * un server che consenta di eseguire cron job
    * accesso via telnet/ssh al server

    Quando serve:

    * offri un servizio di cartoline virtuali, ed i tuoi utenti possono scegliere di mandare le cartoline in una data futura? Avrai il problema di eseguire lo script almeno una volta al giorno in modo che, se ci sono degli invii "in scadenza", le mail vengano inviate;
    * hai un motore di ricerca interno ed aggiungi del materiale in continuazione? Dover lanciare lo spider ogni volta che qualcosa viene pubblicato per tenere aggiornato il database è un'inutile perdita di tempo. Inoltre potresti correre il rischio di dimenticartene.
    * il tuo hoster non ti offre il servizio di backup, e quindi usi uno script che fa il salvataggio di tutti i tuoi dati, ma non riesci sempre ad eseguirlo, per cui ti manca la copia del tuo sito prima che degli hacker turchi hanno rasato a zero il tuo forum?

    Crontab risponde alle esigenze indicate poco fa e a tutte quelle che richiedano l'esecuzione automatica di uno script ad intervalli di tempo, senza l'intervento da parte tua.

    Premessa

    Un file crontab è più o meno una cosa del genere:
    codice:
    0 * * * * /etc/reset.cgi
    0 0 * * * /etc/resetlogs.cgi
    Cosa significa quanto sopra? E' molto semplice. Nell'esempio precedente c'è un file crontab con 2 comandi. Un file crontab può contenere un numero qualsiasi di comandi. E' molto importante che ci sia un solo comando per linea, per cui [ 0 * * * * * /etc/reset.cgi ] sarà il sig. COMANDO UNO e [0 0 * * * /etc/resetlogs.cgi ] sarà il sig. COMANDO DUE. Puoi avere i sigg. COMANDO TRE, QUATTRO e così via. Quello che conta è che ci sia un solo comando per linea. Altrettanto importante è che dopo l'ultimo comando ci sia una linea vuota, o Crontab non funzionerà.

    Ok, diamo un'occhiata a ciascun comando. Può tornare utile pensando alla sveglia. Ogni comando infatti è come impostare un'allarme per una determinata azione. I primi 5 campi specificano il tempo in cui il sesto campo verrà eseguito.

    I 5 campi iniziali rappresentano

    MINUTI(0-59) ORE(0-23) GIORNODELMESE(1-31) MESEDELL'ANNO(1-12) GIORNODELLASETTIMANA(0-6) Notabene: 0 = Domenica

    Nota anche che l'asterisco (*), chiamato WILDCARD, che consente di non specificare alcun valore per il campo in oggetto.

    Se non fosse abbastanza, ecco degli esempi che dovrebbero rimuovere ogni dubbio:

    12 03 * * 1,4 /percorso/assoluto/per/la/webroot/cgibin/script.cgi

    12: minuti [0-59]
    03: ore [0-23]
    *: giorno del mese [1-31]
    *: mese [1-12]
    1,4: giorno della settimana [0-6, con la domenica indicata da 0]
    /script.cgi: comando [lo script da eseguire]
    Traduzione: alle 3:12a.m., orario del server, ogni lunedì e giovedì, lo script script.cgi verrà eseguito. Tu ronfi, il server lavora per te. Niente male, vero?

    Alcune variazioni sul tema
    * tutte le mattine, più o meno alle 3?> 12 03 * * *
    * tutti i 15 del mese, alla stessa ora?> 12 03 15 * *
    * 7 volte l'anno, alla stessa ora?> 12 03 31 * * [solo 7 mesi hanno 31 giorni]
    * ogni domenica, a mezzogiorno?> 0 12 * * 0
    * ogni gorno, più o meno a mezzanotte?> 2 0 * * *
    * ogni lunedì e venerdì, alle 3 del mattino circa?> 02 03 * * 1,5

    Crontab e file PHP

    I file si dividono in file eseguibili, che contengono codice, e file di dati, che contengono solo informazioni. Un file php è solo un file di testo e non è in grado di
    eseguire sè stesso. Per interpretare il codice contenuto in quel file di testo devi usare un browser, e devi dire al browser di caricare quel file PHP.

    Soluzione: cambia la tua riga in modo che il crontab lanci lynx e fagli "visitare" la tua pagina php. I file PHP vengono interpretari dall'apposito interprete, che a sua volta è lanciato dal server HTTP. Quindi dai a lynx l'intero URL "http://".

    Un esempio potrebbe essere:
    0 * * * * /usr/bin/lynx http://www.dominio.estensione/dir/file.php

    Ovviamente lynx deve essere installato sul server. In alternativa prova con il comando wget

    Caricare ed eseguire i/l Crontab

    Non importa come chiamerai il file crontab. Il consiglio è di chiamarlo in modo che ti venga subito in mente di cosa si tratta (ad esempio: cronstats or croncgi) ma non fa alcuna differenza.
    Carica il file in modalità ASCII sul server.
    Finito il l'upload, collegati al server via telnet/ssh e portati nella directory in cui hai messo il file (anche in questo caso, non fa alcuna differenza dove hai messo il file). Ti suggerisco di metterlo in una directory protetta o all'interno della cgi-bin, in modo che nessuno possa vederlo. Sempre via telnet/ssh, digita i seguenti comandi:
    codice:
    cd /percorso/per/la/directory/con/crontab
    crontab nomedelfilecronotab
    Se tutto è andato per il meglio, non dovresti accorgerti di nulla, a parte il fatto che le cartoline vengono inviate, il database del motore aggiornato ed il backup quotidiano non vede l'ora di essere scaricato.

    Opzioni del crontab.

    Comandi da digitare via ssh/telnet e spiegazione:

    crontab -l verranno visualizzati i crontab in funzione (utile per vedere se un comando è stato registrato correttamente);

    crontab -r rimuove tutti i crontab registrati;

    crontab -d da non fare mai, nemmeno per sbaglio: con questo comando cancellate i job programmati anche del sistema;*

    crontab -e scrivere o modificare un crontab direttamente via telnet/ssh. L'editing risulterà un pochino "ostico" (per lo meno, io non ci sono riuscito), per cui è consigliabile cambiare editor prima di far partire crontab:
    export VISUAL=nome_editor
    ad esempio io uso pico per comodità e quindi:
    export VISUAL=pico
    crontab -e


    Alcuni consigli:

    * Procurati un foglio A4 bianco e ruotalo di 90°. Prendi una penna e scrivi i giorni della settimana sul lato lungo, cominciando da domenica. Torna all'inizio, e assegna ad ogni giorno un numero progressivo, cominciando da 0 (zero). Così facendo dovresti evitare di fare confusione quando imposterai l'esecuzione dei comandi
    * Se, come me, sei in hosting e non hai un server tutto tuo, usa una buona dose di buon senso. Il modo migliore per sovraccaricare il server è quello di impostare comandi in modo eccessivo, come ogni ora, mezz'ora o, peggio, ogni quarto d'ora. Prova magari ad usare dei minuti "insoliti", tipo 02, 03, 17, 28, etc. Se dovessi mostrare poca considerazione per il server, è molto probabile che ti venga tolto il privilegio di usare crontab.
    * Se hai uno script che impiega 5 minuti a fare il suo dovere, per sicurezza pensa che ne impieghi 25.
    * Sempre, assolutamente, in ogni caso, senza ombra di dubbio (è chiaro il concetto???), usa il PERCORSO ASSOLUTO dello script. Così sei sicuro che tutto verrà fatto nel migliore dei modi, e non incorrerai in errori di sorta.
    * Suggerimento basato sull'esperienza: SEMPRE indicare i minuti. In modo più chiaro, MAI usare wildcard (*) nel primo campo. Altrimenti lo script verrà eseguito ogni minuto. Se, come nel mio caso, lo script prevede l'invio di mail, non è bello svegliarsi la mattina e dover scaricare centinaia di mail tutte uguali.

    Crontab via Pannello di controllo:

    Alcuni pannelli di controllo (CPanel, ad esempio), hanno un'interfaccia che semplifica molto l'impostazione, come si può vedere dalla schermata seguente:



    Non credo ci sia molto da aggiungere, una volta capito quanto scritto sopra.

    Per bug, segnalazioni, errori e complimenti, scrivetemi

    Dario

    [editato: bubu77]
    Se non potete utilizzare crontab esistono dei servizi gratuiti che anche se limitati possono aiutarvi.
    http://webcron.org/index.php
    Anomalia grafica: una perdita di tempo

  2. #2
    Utile e chiara, se poi un qualche volonteroso inserisse una guida ad AT di WIN sarebbe una pillola davvero perfetta
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    Originariamente inviato da Fabio Heller
    Utile e chiara, se poi un qualche volonteroso inserisse una guida ad AT di WIN sarebbe una pillola davvero perfetta
    hai qualche link di riferimento? Magari mi documento e scrivo due righe...

    Dario

    P.S.: greazie pe ril supporto
    Anomalia grafica: una perdita di tempo

  4. #4
    Complimenti sinceri
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  5. #5

    Aggiunta dell'ultim'ora

    Per controllare che il crontab sia stato registrato correttamente, sempre via telnet/ssh, in una qualsiasi directory:

    codice:
    crontab -l
    per avere la lista dei comandi impostati.

    Mi raccomando, non editate le impostazioni da qui, ma rifate tutto da capo.

    Con:

    codice:
    crontab -r
    invece rimuovete tutti i comandi impostati.

    HIH.

    Dario
    Anomalia grafica: una perdita di tempo

  6. #6
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    solo due piccole aggiunte:

    scrivere o modificare un crontab direttamente via telnet/ssh basta digitare
    crontab -e

    cambiare editor
    prima di far partire crontab

    export VISUAL=nome_editor

    ad esempio io uso pico per comodità:
    export VISUAL=pico
    crontab -e
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  7. #7
    bellissima pillola:metallica
    w la topa

  8. #8
    Originariamente inviato da chris
    solo due piccole aggiunte:

    scrivere o modificare un crontab direttamente via telnet/ssh basta digitare
    crontab -e

    cambiare editor
    prima di far partire crontab

    export VISUAL=nome_editor

    ad esempio io uso pico per comodità:
    export VISUAL=pico
    crontab -e
    Avevo visto il comando crontab -e, ma non riuscivo ad uscire

    Con la modifica dell'editor diventa un gioco da ragazzi.

    Questa sera modifico tutto.

    Grazie mille.

    Dario

    P.S.: se vuoi ti metto tra i ringraziamenti...
    Anomalia grafica: una perdita di tempo

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    313
    non fate mai
    crontab -d
    con questo comando cancellate i job programmati anche del sistema
    Windows era mia moglie,
    ora siamo separati in pc...
    Linux sta per diventare mia moglie
    -Ciociaria Linux User Group-
    http://www.cilug.org

  10. #10
    Originariamente inviato da netbomb
    non fate mai
    crontab -d
    con questo comando cancellate i job programmati anche del sistema
    Aggiungo anche questo, ovviamente senza testarlo

    Un qualunque utente puo' cancellare i job del sistema? :master:

    Dario
    Anomalia grafica: una perdita di tempo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.