Dovrei usare cron.hourly o crontab?


9

Sembra che tutti i suggerimenti per l'utilizzo / la pianificazione di awstats siano tramite crontab, come tale: 0 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null(eseguendo awstats ogni ora).

Tuttavia, se controllo crontab -l, dice che crontab è vuoto per il mio utente.

Tuttavia, quando controllo il /etc/cron.hourly, ho un file awstats con il seguente:

#!/bin/bash
exec /usr/share/awstats/tools/awstats_updateall.pl now         -configdir="/etc/awstats"           -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null
exit 0

Solo per farti sapere, il mio awstats è aggiornato bene, crea i suoi rapporti e tutto è buono.

L'esecuzione di un comando crontab crea una voce nella cartella cron specificata? (ad es. cron.hourly o cron.daily, ecc.)? O non sono correlati? Se sono correlati, perché il mio utente è senza una voce crontab?

Risposte:


13

crontab -eè il modo tradizionale di creare un crontab. Trovo che sia imbarazzante e vecchio stile, ma la gente lo usa ancora.

/etc/cron.hourly, inclusi cron.daily, cron.weekly& /etc/cron.d, ecc. sono forniti dalla maggior parte delle distribuzioni Linux perché sono convenienti e funzionano bene con strumenti di automazione come gestori di pacchetti e sistemi di gestione della configurazione. È molto facile per un gestore di pacchetti rilasciare un file /etc/cron.hourly/foorispetto allo scripting di una modifica di un crontab esistente. La modifica programmatica di un file tramite un gestore pacchetti potrebbe corrompere il file, aggiungere voci duplicate, eliminare la riga errata, rovinare i commenti, ecc. Vedere Modifica file considerati dannosi per alcune discussioni, poiché questo problema esiste da un po 'di tempo.

L'esecuzione di un comando crontab crea una voce nella cartella cron specificata?

No. /etc/cron.daily/fooviene creato dal gestore pacchetti o creato a mano. Non viene creato quando si esegue il comando crontab. crontab -ecreerà il crontab sotto /var, come /var/spool/cron/root.

Preferisco /etc/cron.$period/fooe /etc/cron.dperché quella gerarchia è ordinata e organizzata, ed è facile da script per il mio sistema di gestione della configurazione. /etc/crontabè disponibile anche su Linux, ma è un po 'monolitico e difficile da modificare a livello di programmazione. Sistemi come il supporto di FreeBSD /etc/crontabe /etc/periodic.


1
Grazie per la tua risposta, la preferisco anche io, dato che sono abituato a rilasciare i file di configurazione nelle cartelle .d (cioè conf.d, ecc.)!
bevanda gassata

Posso solo essere d'accordo su questo. Preferisco anche usare il sistema /etc/crontabquando si tratta di eseguire tak di sistema invece di usare il crontab di root. In questo modo, si può facilmente sapere cosa sta facendo il sistema senza scavare nel crontab di ogni utente.
Spacca il

1
Sono d'accordo con questa risposta. Forse menzioniamo alcune altre differenze: /etc/cron.$period/ contiene script autosufficienti che vengono eseguiti dall'utente root. OTOH /etc/cron.d/ contiene i file include nel crontab -eformato. Infine, / etc / cron * è destinato agli script root, mentre crontab -eè disponibile per tutti gli utenti.
Nils Toedtmann,

Il crontab -ecomando è imbarazzante per impostazione predefinita. Così ho creato uno script chiamato cteche fa due comandi: export EDITOR=gedite quindi crontab -el'editor è più facile da lavorare.
SDsolar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.