Linux周期运行一个命令的脚本

本文介绍了一个Shell脚本,用于周期性地执行指定的命令或脚本,包括设置执行次数和间隔时间。

在做测试的时候,有时候需要不断的运行一个命令或者脚本,下面的这个脚本可以实现这个目的。

使用方法:

usage: period.sh [options] <cmd> <args>
    run command periodically.
options:
    -c <count> : how many times.
    -i <interval>: every <interval> seconds.
    -h: show help

示例:

   $ ./period.sh ls -l

   $ ./period.sh -i 3 ls -l

#!/bin/sh
PROG_NAME=period.sh
INTERVAL=1
ALWAYS_LOOP=1
COUNT=-1

#------------------------- functions --------------------------------------------------
usage() {
  cat << END
usage: $PROG_NAME [options] <cmd> <args>
    run command periodically.
options:
    -c <count> : how many times.
    -i <interval>: every <interval> seconds.
    -h: show help

END
}

run_cmd()
{
  echo $ $*
  eval $*
  echo
}

#---------------------------- main() --------------------------------------------------
# get command line arguments
while getopts "c:i:h" options; do
  case "$options" in
    c) COUNT=$OPTARG ;;
    i) INTERVAL=$OPTARG ;;
    h) usage; exit 0;;
    \?) usage; exit -1;;
  esac
done

shift $((OPTIND - 1))

if [ $# -lt 1 ]; then
  usage;
  exit 0;
fi

if [ $COUNT -ge 0 ]; then
   ALWAYS_LOOP=0
else
   COUNT=1
fi

while [ $ALWAYS_LOOP -eq 1 ] || [ $COUNT -gt 0 ]; do
  echo "#$INDEX Date: `date +%Y-%m-%d_%H:%M:%S`"
  run_cmd $*
  INDEX=$((INDEX + 1))
  COUNT=$((COUNT - 1))
  sleep $INTERVAL
done





Linux环境下,如果你想周期性地并行执行多个脚本,你可以考虑使用任务调度工具如`cron`、`at`,或者是通过系统编程语言如Bash或Python编写脚本来管理任务。这里提供两种常见的方法: 1. **使用crontab**:`crontab`是一个Linux任务调度程序,允许用户定期安排系统任务。例如,你可以创建一个`crontab`配置文件,在其中添加一行来指定每天何时执行一组脚本,比如: ``` * * * * * /path/to/command1.sh && /path/to/command2.sh ``` 这里的时间表达式代表分钟(*)、小时(*)、日期(*)、月份(*)和星期几(*),按照这个时间点执行两个脚本。 2. **bash job control** 和 `&`:如果你只需要偶尔或临时并发执行脚本,可以在终端中启动它们并后台运行,例如: ``` command1.sh & command2.sh & ``` 后面的`&`表示将进程放在后台。如果你想让它们周期性地执行,你可以考虑写一个简单的shell脚本,里面包含这两个命令,并安排它在crontab或其他定时器中定期运行。 3. **使用nohup** 或 **screen/tmux**:`nohup`用于让进程在用户断开连接后依然继续运行。而`screen`或`tmux`则提供了更强大的分屏和会话管理功能,可以方便地组合并监控多个命令的执行。 4. **使用Python的schedule库**:如果你需要更复杂的调度逻辑,可以编写Python脚本利用`schedule`库来计划执行多脚本任务。 记得每次修改了crontab任务后,最好使用`crontab -e`编辑器保存并验证新规则。同时,为了防止资源争抢和潜在的问题,建议合理设计脚本间的依赖关系和资源占用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值