crond是linux下帮助用户或系统定时执行任务的守护进程,它会每分钟在特定的文件里检查是否有要执行的任务,有则自动执行。
crond会在一下几个目录或文件检查要执行的任务:
/var/spool/cron 这个目录包含用户的定时任务配置文件,用户对应的配置文件的名字即为用户名
/etc/anacrontab 这个文件配置了系统每日、周、月要执行的工作
/etc/cron.d 这个目录包含一些系统的定时任务配置文件
/etc/crontab 系统的定时任务配置文件
crond的日志文件位置 /var/log/cron
1. 检查crond是否开机自启动
在CentOS 6下:
chkconfig --list | grep 3:on | grep cron
若无输出信息则执行:
chkconfig crond on
2. 根据需要手动启动crond
/etc/init.d/crond start
3. 使用crontab工具编写配置文件
一般使用crontab -e 编辑当前用户的crontab文件内容,该命令会调用文本编辑器(vi)来编辑生成/var/spool/cron目录下的与用户同名配置文件
crontab文件语法
* * * * * cmd
上述前5个星号对应的五个字段是周期性执行任务的时间粒度,代表的含义(从左到右)分别为分、时、日、月、周,后面为周期性执行的命令。
五个字段的使用方法:
星号: 代表任意可能值,即有每分、每时、每日、每月、每周的意思
逗号:上述五个字段中是用空格隔开的,对于一个字段里的内容,可以用逗号隔开来指定精确的时间点列表
中杠:在字段中用中杆连接两个数字指定时间范围
/ :斜杆后加数字,有每隔多少时间的意思
举例说明:
1)0 */3 * * * cmd 每隔3小时的执行一次cmd
2)*/5 * * * * cmd 每隔5分钟执行一次cmd
3)30 3 * * 6 cmd 每周六的3点30分执行一次cmd
4)0 0 1,20 * * cmd 每月的1号和20号的0点0分执行一次任务
5)0 0 2-6 * * * cmd 每月的2,3,4,5,6号的0点0分执行一次任务
6)0 12 2-10/2 * * * cmd 每月的2号到10号间,4,6,8,10号的12点整执行一次cmd
4. 默认情况下 crond会把任务执行时的输出信息作为邮件发送到相应用户,为避免不必要磁盘空间消耗,一般会把命令的输出用重定向到/dev/null,即在cmd后加上"> /dev/null 2>&1",
或者在crontab文件中将环境变量"MALTTO"赋值为空,表示不发送邮件给用户,若不使用上述措施,并且系统没有开启邮件服务(CentOS 6为postfix),
则在/var/spool/postfix/maildrop目录下会不断堆积临时邮件文件,可能会造成文件系统虽有剩余空间,inode却满的情况
5. 以下建议摘取子某培训视频
1)注意系统环境变量导致的定时任务执行问题,但crond执行定时任务时,是不会加载任何环境变量,需要在crontab文件中添加必要的环境变量
2)定时任务里的命令尽量用全路径,如果不想使用路径,则需在crontab文件里指定PATH环境变量,参考/etc/crontab
3)切换到目标目录的上一级打包目标
4)使用脚本程序替代命令行定时任务
5)避免不必要的程序及命令输出
阅读(1567) | 评论(0) | 转发(0) |