仓库地址,对于crontab的介绍还不够详细,后面会考虑再写两篇,一篇为crontab快速入门+快速复习,一篇为对crontab的详细介绍与原理解析以及替代品对比。
在流量实验的时候(benchmark/ press test/ simulation),我们经常遇到需要长时间发送流量的情况。这时候如果让人呆在机器旁边按时启动的话,一个是非常折磨人的精神(必须要定闹钟严格按时),另外一个方面也不能够明确地保证实验能够按时进行按时结束。
虽然经过多次实验后,在早期还是建议人工介入,这样如果出现了问题也能够及时进行处理。
离线定时发送流量分为两个部分:
离线执行,或者更准确地说,是后台执行定时执行,可以分为重复与不重复两种。最常见的后台执行莫过于nohup命令。考虑到我们使用的是gatling,因此命令如下:
nohup ~/gatling/bin/gatling.sh < input &解释:
将要执行的命令输入到文本文件input中,然后使用输入重定向将内容导入。&表示后台执行nohup会将输出导入到nohup.out中,在需要调试的时候会比较方便。如果运行时间非常长,为了防止硬盘空间不够,可以加上> /dev/null(或者只将普通输出导入到空,保留错误输出)重定向相关基础知识:
/dev/null 代表空设备文件 > 代表重定向到哪里 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1,表示2的输出重定向等同于1目前比较常见的方法为使用cron命令的配置文件crontab,参考资料:
csdnHow to use 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表示每隔十分钟访问一次该网址。
