Esegui automaticamente un comando ogni 5 minuti


10

Sono molto nuovo nell'uso di Linux e specialmente nella riga di comando. Sono riuscito a far funzionare correttamente un server multimediale Plex, ma devo eseguire il seguente comando ogni 5 minuti per la sincronizzazione con Amazon Drive.

sincronizzazione acd_cli

Ho provato vari metodi diversi come script bash e non riesco a farlo funzionare. Ho solo bisogno del comando sopra per eseguire ogni 5 minuti e sembra che ci sia un modo semplice che non conosco.

Risposte:


7

Metodo semplice

Puoi impostare uno script bash che esegue in loop eseguendo per sempre quel comando e poi dormendo per 5 minuti.

Apri un terminale ed esegui questo comando:

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

Quindi, digitare quanto segue:

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

Premi ctrl+ oper salvare

Premi ctrl+ xper uscire

Esegui questo comando:

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

All'avvio del computer, premere ctrl+ alt+ te digitare, amazon-syncquindi ridurre a icona la finestra del terminale. Il comando verrà eseguito una volta ogni 5 minuti (300 secondi).


C'è un modo per farlo funzionare all'avvio, ma l'ultima volta che ho provato a farlo ho dovuto andare nel ripristino del sistema per annullare ciò che ho fatto, ma so che è possibile se lo fai nel modo giusto.
cheesits456,

Per farlo funzionare all'avvio è necessario un cronjob. Vedi la mia risposta qui sotto.
Michael Sandman,


4

C'è anche il watchcomando, se è necessario mostrare l'output sullo schermo e cancellare automaticamente.

watch -n 300 acd_cli sync

1

Quando dici 5 minuti, vuoi dire 5 minuti o ti dimenticherai del comando in 5 minuti e lo lascerai funzionare indefinitamente?

Ci sono così tante opzioni tra cui scegliere, ma ti mostrerò 4 modi intelligenti per implementare questo.


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

Questo dice che i è 0, quindi 0 è inferiore a 20, quindi sarà meno 1 fino a raggiungere 0. Quindi verrà eseguito 20 volte. Ogni 5 minuti

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

Questo dice mentre è vero, esegui il comando dato ogni 5 minuti, A partire da ora per 30 minuti, Per eseguire questo comando devi installare at eseguendo apt install su --assume-yes, Non esattamente sicuro che funzionerà su un ciclo però

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

Questo comando dice, mentre $ i rimane inferiore a 20 rispetto all'interfaccia della riga di comando di Amazon Cloud Drive che hai elencato, quindi sono ancora più uno su ogni occorrenza del comando, ogni 5 minuti per sempre

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

Questo dice che per la sequenza di input 20 esegui la sincronizzazione di Amazon Cloud Drive, ogni 5 minuti e 20 volte

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.