预计阅读时间:15分钟
可能在凌晨的某个时刻,可能是在某个非高峰时间点,需要任务在规定的时间点自动运行起来,有些任务应该以固定的间隔时间进行,有些只需要执行以一次。 本文会首先介绍一下不同场景下的自动执行任务的命令以及区别,此外会针对命令详细讲解使用方法和注意事项。01
—
定时执行任务的命令
crontab命令和at命令都是可以执行定时任务的命令,下面对两者区别进行列举:
(1)特点crontab:用于调度重复性任务
at:用于调度只执行一次的任务
(2)文件位置
crontab:/var/spool/cron/crontabs
at:/var/spool/cron/atjobs
crontab:/etc/cron.d/cron.allow 和 /etc/cron.d/cron.deny
at:/etc/cron.d/at.deny
02
—
crontab 命令
(1)简介:crontab 是用来安装、卸载或者列出定时任务列表的命令。
(2)建立定时任务的两种方式用户级:crontab -e
系统级:vi /etc/ crontab
系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务;
可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行;
如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效
* * * * * 要执行的命令----------------| | | | || | | | ---- 周当中的某天 (0 - 7) (周日为 0 或 7)| | | ------ 月份 (1 - 12)| | -------- 一月当中的某天 (1 - 31)| ---------- 小时 (0 - 23)------------ 分钟 (0 - 59)
例如:
### 每隔 5 分钟运行一次 test 脚本 ##*/5 * * * * /root/test.sh
(5)常用方法
列出crontab文件:crontab -l
编辑crontab文件:crontab -e
删除crontab文件:crontab -r
删除某用户名下的定时任务,此命令需以 root 用户身份执行:crontab -r -u username
03
—
创建用户级定时任务示例
(1)任意位置输入crontab -e
(2)进入crontab的任务部署文档
(3)vim命令之后,shift+g跳转到最后一行,添加定时任务命令
例如:*/5 * * * * /root/test.sh
*/5 * * * * cd /root/test; ./test.sh >> test.log 2>&1
注:首先进入test所在路径,然后执行该路径下的test.sh脚本,最后通过> test.log输出日志。
(4)vim命令wq退出任务部署文档 (5)test.sh文件中,设置自己要执行的命令 (6)后台验证是否运行预设脚本注:安装glances,命令行输入glances即可查看自己想要执行的命令行是否会运行
04
—
注意事项
4.1 创建了一个crontab,但是任务却无法自动执行,而手动执行没有问题原因:一般是由于crontab文件中没有配置环境变量引起的。
4.2 如何禁用邮件输出
(1)如果有内容输出的话,会默认发送到本地邮箱账户中,若想停止接收crontab发送的邮件,需要添加>/dev/null 2>&1这段内容到执行的命令的后面。
*/5 * * * * /root/test.sh >/dev/null 2>&1
(2)如果需要将输出内容发送到指定的邮件帐户,需要定一个变量:
MAILTO="vivek@nixcraft.in"*/5 * * * * /root/test.sh >/dev/null 2>&1
![eeddeff4b30014d21646c3f0a8753f06.png](https://i-blog.csdnimg.cn/blog_migrate/e655e6c332e74efa6b445b570257b032.png)
记忆如果不整理,它的沉睡速度往往快的惊人。
—— 饶雪漫 《 离歌 》