计划任务就是一个在机器开机的情况下会按着计划来执行的一个操作。为什么会有计划任务这个东西呢?我觉得,比如每天十点备份,每天晚上一点爬取一些数据等等,但是如果让人每天都这样去完成这些事情的话,效率会太低。所以有了计划任务。Linux和Windows都有计划任务。
计划任务的守护进程是crond
想运行计划任务的时候必须要确保crond正常
systemctl status crond.services
计划任务又分为系统的和用户的
系统的计划任务可以在/etc/crontab里面写
系统的计划任务一般用于实现系统自己的维护
用户的计划任务可以用crontab命令来编辑
Crontab命令可以添加或者查看当前用户的计划任务
crontab命令会把结果通过mail返回值,如果不想接受结果,可以传给数据黑洞/dev/null。或者想记录下来,可以重定向到自己的地方去
crontab -e 编辑当前用户的计划任务
crontab -l 列出当前用户的计划任务
crontab -r 移除当前用户的计划任务
(全部都可以加 -u 选项,但是只有root用户以及特别的提权了的用户才可以用)
crontab -e
写计划任务是有一个格式的:
格式可以在/etc/crontab里面有
五个*分别代表分(0-59),时(0-23),日(1-31),月(1-12),周内的日(0-6)0或者7是表示星期日。
*写的东西不同,意思也不一样。
假设在第一段
如果*写*的话,每分钟都执行
如果写2的话,每小时的第二分钟执行
如果写*/2的话,每隔两分钟执行一次
如果写成2-6,就是2分钟到6分钟每分钟执行一次
如果写成2,5,就是第二分钟和第五分钟都执行一次
一般,我们不会直接把命令写到crontab -e的页面上,一般会把命令写到脚本,把脚本放到crontab -e上面执行
如果脚本没有给执行权限的话,执行的时候会执行不了,然后会在该用户的邮箱里面有提示
脚本一定要+运行权限
chmod +x 脚本
crontab -l 查询自己的任务
crontab -l -u user1
查询user1的任务
但是只可以是root来执行
如果不是root 的话会看不见
不过可以sudo提权来执行这个命令(用户提权可以在/etc/sudoers写,也可以吧普通用户加到wheel组里面)
crontab -r 删除用户的计划任务
不加上-u指定用户,一删会删完自己当前的计划任务
同样的,-r -u 需要要一定的权限,只可以root执行,其他普通用户执行得提权
crontab -r 和rm -rf * 一样要慎用,把重要的计划任务删除掉就完蛋了
如果想删除某一条计划任务的话,要先-e编辑,/查找,然后dd删除,wq保存退出
除了周期性的计划任务,还有一次性的计划任务,就是在未来某一时刻执行一个任务
可以使用at命令
at 加上时间点
然后加入命令,
ctrl+D结束
结束之后
at -d 加数字
指定删除某一条任务