Exécuter automatiquement une commande toutes les 5 minutes

10

Je suis très nouveau dans l'utilisation de Linux et en particulier avec la ligne de commande. J'ai réussi à installer et à exécuter un serveur multimédia Plex, mais je dois exécuter la commande suivante toutes les 5 minutes pour me synchroniser avec mon Amazon Drive.

synchronisation acd_cli

J'ai essayé différentes méthodes telles que les scripts bash et je n'arrive pas à le faire fonctionner. J'ai juste besoin de la commande ci-dessus pour exécuter toutes les 5 minutes et j'ai l'impression qu'il existe un moyen simple que je ne connais pas.

SneakierDAG
la source

Réponses:

7

Méthode facile

Vous pouvez configurer un script bash qui exécute en boucle cette commande pour toujours, puis reste en veille pendant 5 minutes.

Ouvrez un terminal et exécutez cette commande:

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

Tapez ensuite ce qui suit:

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

Appuyez sur ctrl+ opour enregistrer

Appuyez sur ctrl+ xpour quitter

Exécutez cette commande:

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

Lorsque vous démarrez votre ordinateur, appuyez sur ctrl+ alt+ tet tapez, amazon-syncpuis réduisez la fenêtre du terminal. La commande s'exécute une fois toutes les 5 minutes (300 secondes).

cheesits456
la source
Il y a un moyen de le faire fonctionner au démarrage, mais la dernière fois que j'ai essayé de le faire, j'ai dû aller dans la récupération du système pour annuler ce que j'ai fait, mais je sais que c'est possible si vous le faites correctement.
cheesits456
Pour que cela fonctionne au démarrage, vous avez besoin d'un cronjob. Voir ma réponse ci-dessous.
Michael Sandman
13

Vous pouvez utiliser

crontab -e

pour créer un programme cron utilisateur.

La ligne dont vous avez spécifiquement besoin est

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

En backup.shajoutant toutes les commandes que vous souhaitez exécuter, assurez-vous que le script est exécutable, c.-à-d.chmod +x backup.sh

Jettes un coup d'oeil à

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

Michael Sandman
la source
4

Il y a aussi une watchcommande, si vous devez afficher la sortie à l'écran et l'effacer automatiquement.

watch -n 300 acd_cli sync
Sergiy Kolodyazhnyy
la source
1

Quand vous dites 5 minutes, voulez-vous dire 5 minutes ou allez-vous oublier la commande en 5 minutes et la laisser tourner indéfiniment

Il y a tellement d'options à choisir, mais je vais vous montrer 4 façons intelligentes de l'implémenter.


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

Cela signifie que i est 0, puis 0 est inférieur à 20, donc il diminuera 1 jusqu'à ce qu'il atteigne 0. Il s'exécutera donc 20 fois. Toutes les 5 minutes

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

Cela dit, tout en étant vrai, exécutez la commande donnée toutes les 5 minutes, à partir de maintenant pendant 30 minutes, pour exécuter cette commande, vous devrez installer à en exécutant apt install at --assume-yes, pas exactement sûr que cela fonctionnera une boucle si

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

Cette commande dit, alors que $ i reste inférieur à 20, faites l'interface de ligne de commande Amazon Cloud Drive que vous avez répertoriée, alors je reste toujours i plus un à chaque occurrence de la commande, toutes les 5 minutes pour toujours

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

Cela signifie que pour la séquence d'entrée 20, effectuez la synchronisation d'Amazon Cloud Drive, toutes les 5 minutes 20 fois


la source