如何离线定时发送流量

仓库地址,对于crontab的介绍还不够详细,后面会考虑再写两篇,一篇为crontab快速入门+快速复习,一篇为对crontab的详细介绍与原理解析以及替代品对比。

如何离线定时发送流量

在流量实验的时候(benchmark/ press test/ simulation),我们经常遇到需要长时间发送流量的情况。这时候如果让人呆在机器旁边按时启动的话,一个是非常折磨人的精神(必须要定闹钟严格按时),另外一个方面也不能够明确地保证实验能够按时进行按时结束。

虽然经过多次实验后,在早期还是建议人工介入,这样如果出现了问题也能够及时进行处理。

问题分解

离线定时发送流量分为两个部分:

  1. 离线执行,或者更准确地说,是后台执行
  2. 定时执行,可以分为重复与不重复两种。

后台执行

最常见的后台执行莫过于nohup命令。考虑到我们使用的是gatling,因此命令如下:

nohup ~/gatling/bin/gatling.sh < input &

解释:

  1. 将要执行的命令输入到文本文件input中,然后使用输入重定向将内容导入。
  2. &表示后台执行
  3. nohup会将输出导入到nohup.out中,在需要调试的时候会比较方便。如果运行时间非常长,为了防止硬盘空间不够,可以加上> /dev/null(或者只将普通输出导入到空,保留错误输出)

重定向相关基础知识:

/dev/null 代表空设备文件
> 代表重定向到哪里
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

定时执行

目前比较常见的方法为使用cron命令的配置文件crontab,参考资料:

比较简单的来说,就是下面这个表

# crontab -e
SHELL=/bin/bash
MAILTO=root@example.com
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

#*  *  *  *  *  command
#分  时  日  月  周   命令

# backup using the rsbu program to the internal 4TB HDD and then 4TB external
01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2

# Set the hardware clock to keep it in sync with the more accurate system clock
03 05 * * * /sbin/hwclock --systohc

# Perform monthly updates on the first of the month
# 25 04 1 * * /usr/bin/dnf -y update

若在同一个项内使用,,表示并列。也可以使用-表示范围。

比如:59 23 * * 1,2,3,4,5 /home/swz/aa.sh 或者 59 23 * * 1-5 /home/swz/aa.sh 表示在每个工作日的23:59分执行aa.sh脚本

若在一项内使用*/x,表示每隔x个单位后执行。

比如:0 */10 * * * /usr/bin/curl http://www.aaa.com/index.php表示每隔十分钟访问一次该网址。

posted @ 2020-10-05 12:16  千灵域  阅读(39)  评论(0)    收藏  举报