crontab -e 写计划任务
crontab -l 列出所有计划任务
crontab -r 删除计划任务
crontab -u username 管理员可以去管理其他用户的计划任务
* * * * * command
分 时 日 月 周
- 可以限制使用crontab的用户账号,可以配置的文件有:
/etc/cron.allow,将可以使用crontab的账号写入其中,不在这个文件的用户则不可以使用crontab
/etc/cron.deny,将不可以使用crontab的账号写入其中,不在这个文件中的就可以使用crontab
注:/etc/cron.allow 比 /etc/cron.deny要优先,这两个文件只选择一个来限制
- 系统的配置文件
[root@aliyun ~]# cat /etc/crontab
SHELL=/bin/bash <==使用的是那种shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin <== 执行文件查询路径
MAILTO=root <== 若有额外stdout,用email将数据送给谁
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
crond 服务读取配置文件的位置
一般来说,crond 默认有3个地方会执行脚本配置文件,分别是:
/etc/crontab == > 跟系统运行有关系
/etc/cron.d/* == > 跟系统运行有关系
/var/spool/cron/* ==> 跟用户自己的任务有关系的配置文件
[root@aliyun cron.d]# ls -l /etc/cron.d
total 8
-rw-r--r--. 1 root root 128 Mar 31 2016 0hourly
-rw------- 1 root root 235 Nov 6 2016 sysstat
[root@aliyun cron.d]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
run-parts == > 就是shell脚本,大约5分钟内随机选一个时间来执行/etc/cron.hourly 目录内的所有执行文件。
3 .注意事项
- 资源分配不均的问题
大量使用crontab的时候,总是会有问题发生。如果每个流程都在同一时间启动的话,那么在某一时段,系统在某个时段,系统会变得相当繁忙,所以这个时候就必须要分别设置,可以这样做:
vim /etc/crontab
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root cmd1
2,7,12,17,22,27,32,37,42,47,52,57 * * * * root cmd2
这样可以将每5分钟运行的流程分别在不同的时刻来执行,从而让系统的执行较为顺畅
- 取消不要的输出选项
当有一个任务一直出错,你就会不停的收到邮件,直接输出到/dev/null - 安全的检验
很多时候木马都是以计划任务命令的方式植入的,所以可以借由检查/var/log/cron的内容来观察是【非你设置的cron被执行了】