在centos上最常用的定时任务应该就是crontab了,有三种方式实现定时任务的方法,但是所用到的场景有所不同 at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。 crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现 anacron 无法周期性执行,只能以天为周期,但有个特点,在关机状态下未>执行的任务,下次开机时可以补上执行 常用的是crontab crond是什么? crond 和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。 而crond正是它的守护进程。cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。 用户执行的定时任务(用户的定时任务一般分为六段) 1、安装 crontabs服务并设置开机自启: $ yum install crontabs $ systemctl enable crond $ systemctl start crond 2、配置定时规则 $ vim /etc/crontab 在配置文件中配置你的定时执行规则 # 将当前时间写入到log文件,一小时执行一次 0 * * * * root echo `date` >> /root/date.log 3、保存生效 $ crontab /etc/crontab 4、查看任务 $ crontab -l 任务列表,如下所示: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 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 0 * * * * root echo `date` >> /root/date.log 到此定时任务配置完成。 crond常用命令 /bin/systemctl start crond /bin/systemctl stop crond /bin/systemctl restart crond /bin/systemctl reload crond /bin/systemctl status crond 以上1-5行分别为启动、停止、重启服务和重新加载配置、查看服务状态 把cron设为在开机的时候自动启动 vi /etc/rc.local /bin/systemctl start crond.service crontab常用命令 crontab -u //设定某个用户的cron服务 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除某个用户的cron服务 crontab -e //编辑某个用户的cron服务 crontab -i //打印提示,输入yes等确认信息 /var/spool/cron/root (以用户命名的文件) 是所有默认存放定时任务的文件, /etc/cron.deny 该文件中所列出用户不允许使用crontab命令 /etc/cron.allow 该文件中所列出用户允许使用crontab命令,且优先级高于/etc/cron.deny /var/log/cron 该文件存放cron服务的日志,可以用tail -f /var/log/cron.log观察 在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail