Автоматически запускать команду каждые 5 минут

10

Я очень плохо знаком с использованием Linux и особенно с командной строкой. Мне удалось успешно запустить и запустить Plex Media Server, но мне нужно каждые 5 минут запускать следующую команду для синхронизации с моим Amazon Drive.

синхронизация acd_cli

Я пробовал различные методы, такие как скрипты bash, и не могу заставить его работать. Мне просто нужно, чтобы команда запускалась каждые 5 минут, и мне кажется, что есть простой способ, о котором я не знаю.

SneakierDAG
источник

Ответы:

7

Простой метод

Вы можете настроить bash-скрипт, который будет постоянно выполнять эту команду, а затем спать в течение 5 минут.

Откройте терминал и выполните эту команду:

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

Затем введите следующее:

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

Нажмите ctrl+, oчтобы сохранить

Нажмите ctrl+, xчтобы выйти

Выполните эту команду:

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

Когда вы запускаете компьютер, нажмите ctrl+ alt+ tи введите, amazon-syncзатем сверните окно терминала. Команда будет выполняться каждые 5 минут (300 секунд).

cheesits456
источник
Есть способ заставить его работать при запуске, но в прошлый раз, когда я пытался сделать это, мне пришлось пойти в восстановление системы, чтобы отменить то, что я сделал, но я знаю, что это возможно, если вы сделаете это правильно.
cheesits456
Чтобы это работало при запуске, вам нужен cronjob. Смотрите мой ответ ниже.
Майкл Сэндман
14

Вы можете использовать

crontab -e

создать пользовательское расписание cron.

Линия, которая вам особенно нужна

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

В backup.shдобавлении любых команд, которые вы хотите выполнить, убедитесь, что скрипт исполняемый, т.е.chmod +x backup.sh

Посмотри на

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

Майкл Сэндман
источник
4

Также есть watchкоманда, если вам нужно показать вывод на экране и очистить автоматически.

watch -n 300 acd_cli sync
Сергей Колодяжный
источник
1

Когда вы говорите 5 минут, вы имеете в виду 5 минут или вы забудете о команде через 5 минут и оставите ее работать бесконечно

Есть так много вариантов на выбор, но я покажу вам 4 умных способа реализовать это.


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

Это говорит о том, что я равен 0, тогда 0 меньше 20, поэтому он будет минус 1, пока не достигнет 0. Таким образом, он будет работать 20 раз. Каждые 5 минут

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

В то время как истина, выполняйте команду каждые 5 минут, начиная с 30 минут, чтобы запустить эту команду, вам нужно установить ее, запустив apt install в --assume-yes. Не совсем уверен, что это будет работать хотя петля

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

Эта команда говорит: хотя $ i остается ниже 20, как в указанном вами интерфейсе командной строки Amazon Cloud Drive, то я все равно я плюс один плюс при каждом появлении команды, каждые 5 минут навсегда

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

Это говорит о том, что для входной последовательности 20 выполните синхронизацию Amazon Cloud Drive, каждые 5 минут 20 раз


источник