Как мне написать крошечный скрипт оболочки Bash, который будет повторять действие каждые 5 секунд? - PullRequest
11 голосов
/ 21 декабря 2010

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

Могу ли я написать .sh, который сделает это?

(у меня Mac OS X.)

Ответы [ 5 ]

13 голосов
/ 21 декабря 2010

Команда watch является хорошим вариантом.Если вам нужно больше контроля, вы можете использовать цикл while:

while [ 1 ]
do
  cp source dest
  sleep 5s
done
13 голосов
/ 21 декабря 2010
while true
do
    cp file /other/location
    sleep 5
done

Вам даже не нужно писать скрипт для этого, просто наберите while true; do cp file /other/location; sleep 5; done в командной строке bash.

9 голосов
/ 21 декабря 2010

Возможно Часы сделают:

watch -n 5 date
3 голосов
/ 21 декабря 2010

Используйте команду watch.

Источник

1 голос
/ 21 декабря 2010

не уверен, что это сработает, но вы можете попробовать это, в основном это бесконечный цикл, поэтому вам придется вручную завершать сценарий или добавлять фильтр, скажем, для клавиши q, при нажатии устанавливает copyFiles в 0

copyFile = 1
while [ ${copyFile} -eq 1 ]
do
    echo "Copying file..."
    cp file /other/location
    echo "File copied.  Press q to quit."
    read response
    [ "$response" = "q" ] && copyFile = 0
    sleep 5
done
...