Come eseguire il comando ogni 10 secondi (senza cron)?


36

Quando eseguo cronho questo errore

cron: impossibile aprire o creare /var/run/crond.pid: autorizzazione negata

Quindi, come farlo senza cron?

PS Voglio verificare se il file in svn è cambiato e ho uno script speciale per questo.


Se non si dispone dell'autorizzazione, provare a eseguire cron con sudo.
Anonimo il

4
Ricorda che cron non farà qualcosa ogni 10 secondi, il più granulare che ottiene è una volta al minuto.
Cesio

Se vuoi creare cronjobs, devi eseguire crontab -eper avviare l'editor. Per elencare i croni correnti, eseguicrontab -l
Lekensteyn il

@Non conosco la password di root, quindi sudo non mi aiuterà.
UAdapter,

Risposte:


59

Per accedere alla tua cronconfigurazione personale dovresti usare il comando crontab -e(per modificare la tua cron table).

L'alternativa è il watchcomando:

watch -n10 command args

Infine, per monitorare gli eventi del filesystem in modo più efficace, è possibile utilizzare inotifywaitdal inotify-toolspacchetto.


1
Vale la pena notare, forse, faresti meglio a racchiudere i tuoi comandi tra virgolette doppie o potresti finire con risultati inaspettati. watch -n<timeout> "command(s) arg(s)"comewatch -n2 "ps ux | grep ss5"
Achille,

Ho trovato difficile watchaccettare comandi lunghi e complicati usando pipe e virgolette. Il ciclo while di seguito ha funzionato, ma ovviamente uno dovrebbe sempre dormire prima per evitare pid di fuga.
rjurney,

@rjurney: dovrebbe essere sufficiente racchiudere l'intero comando tra virgolette, doppie singole o migliori:watch -n10 "ls -l | grep $foo"
enzotib,

@enzotib Il problema si presenta quando ci sono virgolette nei comandi, poiché le virgolette tra virgolette all'interno (god help me) si avvicinano alle virgolette impossibili in bash. In teoria dovrebbe essere possibile ma raramente ottengo citazioni nidificate in bash senza mollare e seguire una strada diversa.
rjurney,

32

Puoi scrivere uno script shell che ha sleepun ciclo while.

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done

5
while truenon richiede parentesi quadre, altrimenti "true" viene interpretato come una stringa e ogni stringa è valida come "true".
enzotib,

1
@enzotib, quindi potresti anche scrivere mentre sei in giro
Eduard Florinescu,

Mentre funziona, dovresti sempre dormire prima perché potrebbe verificarsi qualcosa che non consente di raggiungere il passaggio del sonno, nel qual caso hai un pid in fuga che inonda qualcosa.
rjurney,

4

gnome-schedule (fai clic sul pulsante perInstall now!utilizzare il tuo Software Center)
è un'interfaccia utente grafica che sfrutta la potenza di vixie-cron, dcron e at per gestire il tuo file crontab e fornire un modo semplice per pianificare le attività sul tuo computer. Supporta attività ricorrenti (periodiche) e attività che si verificano solo una volta in futuro. È scritto in Python usando pygtk.

Funzionalità fantastiche

  • Supporta titoli e icone personalizzati per le tue attività in modo che siano più facili da tenere traccia di
  • I modelli supportano in modo da non dover creare più e più volte la stessa attività; questi sono salvati in gconf e possono facilmente spedirli con, diciamo, una distribuzione Linux
  • Se eseguito come root, è possibile modificare le attività crontab e "at" di qualsiasi utente.
  • Stringhe leggibili dall'uomo come "Ogni ora" invece di "0 * * * *"
  • Modalità avanzata per esperti di crontab
  • Fornisce un "applet pannello" in cui è possibile gestire le attività da un menu a discesa
  • Espressioni comuni predefinite come: ogni minuto, ogni settimana, domani, settimana prossima Un calendario consente di scegliere il giorno in cui si desidera eseguire un'attività
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.