$ crontab -e
例如:每天两点钟执行
0 2 */1 * * /usr/bin/python /www/tbktsh/sendms.py &> /dev/null
01 * * * * root run-parts /etc/cron.hourly # 每小时执行/etc/cron.hourly内的脚本,"run-parts"这个参数是指执行文件夹下的所有文件,不加此参数则需要给出明确的执行脚本文件。
$ service crond restart or /etc/init.d/crond restart # 重启计划任务
注意设置脚本文件的可执行权限哦,不然可能会不能正常执行。
centos7 执行命令:
# yum install crontabs
/bin/systemctl restart crond.service #重启服务
/bin/systemctl status crond.service #查看crontab服务状态
第一列代表分钟(0-59)
第二列代表小时(0-23)
第三列代表天(1-31)
第四列代表月(1-12)
第五列代表周(0-6) 0表示周日
“*”代表所有的取值范围内的数字。如果直接用“*”则相当于“*/1”
“/”代表每的意思
“*/5″表示每5个单位
“-”代表从某个数字到某个数字
“,”分散的数字
# 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
# | | | | |
# * * * * * command to be executed
如果已root身份直接使用crontab -e 则相当于编辑/var/spool/cron/root文件,这属于用户级别计划任务。
如果设置系统级别计划任务则编辑/etc/crontab。
cron会定时每分钟扫描下/var/spool/cron/文件夹内的所有文件(每个用户会有一个以用户名命名的定时任务文件)和/etc/crontab文件。
用户计划任务与系统计划任务的区别是给不同的人发送任务信息邮件,系统计划任务是给系统管理员发送,用户的计划任务是给当前用户发送任务信息邮件。
1.直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
计划日志相关
/var/log/cron 文件是所有计划任务的执行记录
/var/log/cron.1 /var/log/cron.2 /var/log/cron.3 /var/log/cron.4 这几个文件是归档文件
当crond执行任务失败时会给用户发一封邮件,如果crond发邮件失败了,则可通过mail日志查看,可以使用tail -f /var/spool/mail/root 即可查看具体的错误信息。
在crontab中的任务增加自己的日志,这样出错后,比较容易看到原因,把错误输出和标准输出都输出到mylog.log中。
0 6 * * * /www/shservice/task.sh >> /tmp/mylog.log 2>&1
0 23 */1 * * /usr/bin/python /data/www/pad_service/SX2Personalise/write.py &> /dev/null # 不输出日志
0 23 */1 * * /usr/bin/python /data/www/pad_service/ClearTiYanRecord/updates.py >/var/log/crontab-tiyan_updates.log 2>&1 # 指定错误日志输出位置
crontab中的输出配置
crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。
shell命令的结果可以通过‘> ’的形式来定义输出
/dev/null 代表空设备文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
那么重定向输出语句的含义:
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
补充知识:anacron 可以唤醒关机期间的工作任务