不断运行bash脚本

时间:2012-11-13 20:36:55

标签: bash

{ while IFS=';' read  u1 p1 u2 p2; do
            imapsync/imapsync --usecache --host1 secure.emailsrvr.com --user1 "$u1" --password1 "$p1" \
                     --host2 imap.gmail.com --ssl2 --user2 "$u2" --password2 "$p2" ...
     done ; } < users1-33.txt

如何连续运行此脚本,以便在完成后再重新开始?

3 个答案:

答案 0 :(得分:4)

许多UNIXy系统都有一个名为watch的工具,它会重复执行一个命令(默认情况下每2秒)。虽然watch不是标准的POSIX工具,但如果你有或可以安装它,这是一种非常简单的方法来实现你所要求的。将您的代码放在一个文件中,然后观察

watch bash -c your_script

答案 1 :(得分:3)

尝试将其包装在函数中并迭代它。

function go()
{
    { while IFS=';' read  u1 p1 u2 p2; do
            imapsync/imapsync --usecache --host1 secure.emailsrvr.com --user1 "$u1" --password1 "$p1" \
                     --host2 imap.gmail.com --ssl2 --user2 "$u2" --password2 "$p2" ...
     done ; } < users1-33.txt

}

while true
do
    go
done

或者您可以从其他文件中引用go()

   #!/bin/sh

   . /the/original/source_file.sh

   go

答案 2 :(得分:1)

您是否考虑过将脚本放在crontab中以便每分钟运行一次?

基于debian的系统。 (ubuntu的)

crontab -e

# m h  dom mon dow   command
*/1 * * * * /usr/local/bin/scriptToRun.sh

每分钟运行一次脚本

More on Cron