¿Cómo ejecutar el comando cada 10 segundos (sin cron)?

36

Cuando ejecuto cronme sale esta falla

cron: no se puede abrir o crear /var/run/crond.pid: permiso denegado

Entonces, ¿cómo hacerlo sin cron?

PD: Quiero verificar si el archivo en svn ha cambiado y tengo un script especial para ello.

Adaptador UA
fuente
Si no tiene permiso, intente ejecutar cron con sudo.
Anónimo el
44
Tenga en cuenta que cron no hará algo cada 10 segundos, lo más granular que obtiene es una vez por minuto.
Cesio
Si desea hacer cronjobs, debe ejecutar crontab -epara iniciar el editor. Para enumerar los crontab -l
crons
@Anónimo No sé la contraseña de root, por lo que sudo no me ayudará.
UAdapter
unix.stackexchange.com/questions/10646/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

59

Para acceder a su cronconfiguración personal , debe usar el comando crontab -e(para editar su tabla cron).

La alternativa es el watchcomando:

watch -n10 command args

Finalmente, para monitorear los eventos del sistema de archivos de manera más efectiva, puede usarlo inotifywaitdesde el inotify-toolspaquete.

enzotib
fuente
1
Vale la pena señalar, tal vez, será mejor que envuelva sus comandos entre comillas dobles o puede terminar con resultados inesperados. watch -n<timeout> "command(s) arg(s)"comowatch -n2 "ps ux | grep ss5"
Aquiles
Me resultó difícil watchaceptar comandos largos y complicados con tuberías y comillas. El bucle while a continuación funcionó, pero por supuesto, uno siempre debe dormir primero para evitar las píldoras desbocadas.
rjurney
@rjurney: debería ser suficiente para envolver todo el comando entre comillas, simple o mejor doble:watch -n10 "ls -l | grep $foo"
enzotib
@enzotib El problema surge cuando hay comillas en los comandos, ya que las comillas dentro de las comillas (dios me ayude) se acercan a comillas imposibles en bash. En teoría, debería ser posible, pero rara vez logro citas anidadas en bash sin renunciar y seguir una ruta diferente.
rjurney
32

Puede escribir un script de shell que tenga sleepun ciclo while.

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done
Anónimo
fuente
55
while trueno requiere corchetes, de lo contrario, "verdadero" se interpreta como una cadena, y cada cadena es tan buena como "verdadera".
enzotib
1
@enzotib, así que también podrías escribir mientras
estás
Si bien esto funciona, siempre debes dormir primero porque algo puede ocurrir y no alcanzar el paso de sueño, en cuyo caso tienes un pid fugitivo inundando algo.
rjurney
4

gnome-schedule (haga clic en el botón paraInstall now!usar su Centro de software)
es una interfaz gráfica de usuario que aprovecha el poder de vixie-cron, dcron y at para administrar su archivo crontab y proporcionar una manera fácil de programar tareas en su computadora. Admite tareas recurrentes (periódicas) y tareas que suceden solo una vez en el futuro. Está escrito en Python usando pygtk.

Características impresionantes

  • Admite títulos e íconos personalizados para sus tareas, de modo que sean más fáciles de seguir.
  • Soporte de plantillas para que no tenga que crear la misma tarea una y otra vez; estos se guardan en gconf y pueden enviarse fácilmente con, por ejemplo, una distribución de Linux
  • Si se ejecuta como root, puede editar las tareas crontab y "at" de cualquier usuario.
  • Cadenas legibles por humanos como "Cada hora" en lugar de "0 * * * *"
  • Modo avanzado para expertos en crontab
  • Proporciona un "applet de panel" donde puede administrar tareas desde un menú desplegable
  • Expresiones comunes predefinidas como: cada minuto, cada semana, mañana, la próxima semana Un calendario le permite elegir el día en que desea ejecutar una tarea
hhlp
fuente