在用Jenkins + Newman跑接口自动化测试过程中,会产生较多的.json文件,时间一长占用较大的存储空间,需要定期清理,Linux的crontab命令可以解决这个问题。
1、Linux中首次执行crontab -e
时,会有如下选择编辑器的提示
Choose
完成后,再次执行crontab -e
,不会出现上图情况,直接进入编辑器。
2、crontab -e
选择编辑器
执行 sudo select-editor
,可重新选择
3、命令格式
执行crontab -e
后,会显示如下信息
定时命令执行的时间设置。
如demo中的
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
每周一早上5:00钟,打包备份/var/backups/home.tgz
到/home/
30 3 1,15 * 5
每月的1号和15号3:30,以及每个周5的3:30,会执行此命令
4、crontab -l
:查看当前用户的定时任务
5、每个用户可以创建属于自己的定时任务crontab,会在/var/spool/cron/crontabs
中罗列出来,如下图所示:
可通过vi编辑查看每个用户下的定时任务
6、crontab -e
创建定时任务时,最好在root用户下面,免去了定时任务的权限问题
示例:
删除指定目录下前28天的reports的sh脚本:
crontab -e
定时执行:
脚本说明:
每周一早上3:00定时执行,然后将执行的结果重定位到/home/ubuntu1604/Vivavideo/cron_newman/cron.log
中,后面的&1
代表正常的输出,&2
代表错误输出,2>&1
表示正确和错误输出均存储到前面的.log
中。
踩坑记:
踩坑1:
在jenkins这个用户下,crontab -e
创建定时任务,实际执行时,总是看不到效果,查看/var/log/syslog
提示 No MTA installed,discarding output.
怎么办?
1、安装MTA,邮件服务
2、重定位保存为null
我的做法:
通过重定位查看输出信息,发现是权限不够
简单一点,在root用户下重新创建crontab,完美执行
踩坑2:
修改sh脚本后,定时任务还是执行的之前的脚本,后续添加的任务并未执行,导致磁盘爆掉,Jenkins挂掉。
解决方法:重启cron服务
/etc/init.d/cron status
:查看cron状态
/etc/init.d/cron restart
:重启从容服务
始发于2017.10.9