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.