eseguendo un comando una volta ogni ora


12

Ho un indicizzatore per sfinge e voglio che funzioni una volta ogni ora su Linux. Come lo farei?

linux 

Risposte:


14

Dal momento che tutti gli altri pubblicano risposte brevi, ho pensato di essere un po 'più descrittivo ...

cron è un demone trovato sulla maggior parte dei sistemi * nix che esegue comandi pianificati agli intervalli specificati.

Aggiungi uno script all'elenco copiandolo nella cartella di tua scelta:

  • cron.daily
  • cron.hourly
  • cron.monthly
  • cron.weekly

Queste cartelle si trovano in genere sotto la /etccartella.


2
cron. * Le cartelle sono molto specifiche per la distribuzione. crontab è il modo universale di far funzionare gli oggetti da cron a intervalli specifici.
MDMarra,

Vero. Sto solo facendo un esempio. crontab ti dà comunque molto più controllo.
Nathan Osman,


7

Solo per essere diversi -

a seconda delle tue esigenze puoi usare il comando watch.

  watch --interval=3600 command

1
Questo esegue il comando ogni 1 ora; o esegue il comando, aspetta 1h e quindi esegue di nuovo? Nota che fa una buona differenza se il comando impiega molto tempo. (Chiedo perché non era chiaro dalla pagina man.)
Malabarba

Davvero non è così difficile provarlo da soli.
mimoralea,


2

modificherai il file cron inserendo il comando crontab -e

che ti porta in un editor 'vi' (per Linux e FreeBSD attuali).

quindi inserire quanto segue: (digitare 'i' per l'inserimento)

00 * * * * /path/to/sphinx_indexer.exe

quindi salva ed esci (premi 'esc' quindi digita quanto segue)

:wq



1

Se ne hai bisogno solo una volta ogni tanto, non in modo permanente come ti piace cron, e la watchsoluzione non è abbastanza flessibile, puoi anche usare un buon vecchio script bash:

while true; do
   # do stuff
   sleep $[60 * 60]
done

Questo non funzionerà come #do Stuff se ci vogliono 3599 secondi per l'esecuzione e quindi in base al requisito lo script deve attivare il secondo successivo sui reparti e reimpostare l'orologio su 0 ma in questo caso si fermerà al 3599 ° secondo e quindi continua a dormire per i prossimi 3600 secondi. Non ci sarà una sovrapposizione ma un divario inatteso tra le iterazioni. Qui immagino che l'utente stia cercando di eseguire un lavoro ogni ora senza cron.
Mannoj,

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.