¿Cómo ejecuto periódicamente un comando con un intervalo muy corto y obtengo el retorno?


12

Necesito llamar a un comando específico en un intervalo de aproximadamente 5 segundos. ¿Cómo configuraría un demonio / proceso ejecutándose en segundo plano o algo similar para hacerlo? Miré cronjobs, pero el intervalo mínimo parece ser de 1 minuto. Cualquier consejo es apreciado;)

Fedora es el sistema.

EDITAR el comando sería un bashscript, así que "mirar" no lo haría, creo.

Respuestas:


10
(
  while true
  do
    your-command-here
    sleep 5
  done
) &
disown

¿para qué se desconoce? ¿Qué pasa si corro sin él?
Hans

@Marcel, disownelimina el último trabajo de la tabla de trabajos de shell, convirtiéndolo en una especie de demonio, como usted pidió. No es un demonio real porque todavía está conectado a la terminal y está en el mismo grupo de procesos, pero seguirá ejecutándose después de cerrar el shell.
Juliano

ok genial, eso funcionaría: D Solo por curiosidad, ¿cómo "haría" un demonio?
Hans

@Marcel la forma simple es llamar a daemon (3) desde C u otro lenguaje con acceso a la biblioteca (no desde un script de shell). Este es el camino difícil .
Juliano

14

¿Por qué crees que 'reloj' no funcionará?

$ cat periodic.sh
#!/bin/bash
echo $(date)
$ chmod +x periodic.sh

$ watch -n 5 ./periodic.sh

¿Qué pasa si me desconecto? El script debe continuar ejecutándose.
Hans

Se detendrá, pero puede usar nohup watch -n 5 ./periodic.sh > periodic.log &y almacenar la salida.
naufraghi

para la tubería, use la cita '' porque el comando "se da a" sh -c ", lo que significa que puede necesitar una cita adicional para obtener el efecto deseado"
andrej

2

Tal vez con nohup? Está diseñado para permitir que un trabajo se ejecute después de cerrar el shell.

También puedes usar pantallas.


0

El watchcomando es apropiado en su caso, usaría un multiplexor de terminal (por ejemplo, tmux, pantalla, etc.) y luego ejecutaría el comando usando

watch -n 5 ./script.sh

En ese caso, incluso si cierra la terminal o la conexión ssh a la máquina, el script aún se estaría ejecutando.

La única limitación de este enfoque es que el script se ejecutará cada 5 segundos solo si ha completado su ejecución dentro de ese intervalo de tiempo.


Dado que el OP declaró explícitamente que, en su opinión watch, no lo haría, explique por qué su respuesta supera esta limitación o en qué momento cree que el OP se equivocó al watchconsiderar que no es adecuado para la tarea.
AdminBee
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.