Ejecutar automáticamente un comando cada 5 minutos

10

Soy muy nuevo en el uso de Linux y especialmente con la línea de comandos. Me las arreglé para poner en funcionamiento con éxito un Plex Media Server pero necesito ejecutar el siguiente comando cada 5 minutos para sincronizar con mi Amazon Drive.

sincronización de acd_cli

He probado varios métodos diferentes, como scripts de bash y no puedo hacer que funcione. Solo necesito el comando anterior para ejecutarse cada 5 minutos y parece que hay una manera fácil que no conozco.

SneakierDAG
fuente

Respuestas:

7

Método fácil

Puede configurar una secuencia de comandos bash que realice un bucle para siempre ejecutando ese comando y luego durmiendo durante 5 minutos.

Abra una terminal y ejecute este comando:

sudo nano /usr/local/bin/amazon-sync

Luego, escriba lo siguiente:

#!/bin/sh  
while true  
do  
  acd_cli sync  
  sleep 300  
done

Presione ctrl+ opara guardar

Presione ctrl+ xpara salir

Ejecute este comando:

sudo chmod +x /usr/local/bin/amazon-sync  

Cuando inicie su computadora, presione ctrl+ alt+ ty escriba, amazon-syncluego minimice la ventana de terminal. El comando se ejecutará una vez cada 5 minutos (300 segundos).

cheesits456
fuente
Hay una manera de hacer que se ejecute al inicio, pero la última vez que intenté hacerlo tuve que ir a la recuperación del sistema para deshacer lo que hice, pero sé que es posible si lo haces bien.
cheesits456
Para que funcione en el inicio, necesita un cronjob. Vea mi respuesta a continuación.
Michael Sandman
13

Puedes usar

crontab -e

para crear un cronograma de usuario.

La línea que necesita específicamente es

*/5 * * * * /home/YOU/backup.sh

Al backup.shagregar cualquier comando que desee ejecutar, asegúrese de que el script sea ejecutable, es decirchmod +x backup.sh

Mira esto

http://www.unixgeeks.org/security/newbie/unix/cron-1.html

Michael Sandman
fuente
4

También hay un watchcomando, si necesita mostrar el resultado en la pantalla y borrarlo automáticamente.

watch -n 300 acd_cli sync
Sergiy Kolodyazhnyy
fuente
1

Cuando diga 5 minutos, ¿quiere decir 5 minutos o se olvidará del comando en 5 minutos y lo dejará ejecutándose indefinidamente?

Hay tantas opciones para elegir, pero le mostraré 4 formas inteligentes de implementar esto.


for (( i=0; i<=20; i++)); do 'acd_cli sync' $i ;sleep 300; done

Esto dice que i es 0, entonces 0 es menor que 20, por lo que será menos 1 hasta que llegue a 0. Por lo tanto, se ejecutará 20 veces. Cada 5 minutos

while true; do 'acd_cli sync'; sleep 300; done | at now +30 min

Esto dice que si bien es cierto, ejecute el comando cada 5 minutos, a partir de ahora durante 30 minutos, para ejecutar este comando deberá instalar at ejecutando apt install en --assume-yes, no estoy seguro de que esto funcione aunque un bucle

while true [ $i -lt 20 ]; do 'acd_cli sync' & i=$[$i+1];sleep 300; done

Este comando dice: Si bien $ i sigue siendo inferior a 20, utilice la interfaz de línea de comandos de Amazon Cloud Drive que usted enumeró, entonces todavía sigo siendo más uno en cada aparición del comando, cada 5 minutos para siempre

for i in $(seq 20); do 'acd_cli sync' $i; sleep 300; done

Esto dice Para la secuencia de entrada 20, sincronice Amazon Cloud Drive, cada 5 minutos 20 veces


fuente