linux计划任务命令-----crontab

a 夏天 提交于 2020-02-10 17:57:20

crontab

Linux crontab是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

而linux任务调度的工作主要分为以下两类
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

crontab file是用来定义定时任务条目的文件,在Linux中,这个文件有存在几个地方系统执行的工作 updatedb、whatis、/etc/cron.d/*
用户自己定义的任务文件 /var/spool/cron/USERNAME

语法

crontab 【选项】

选项

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。

服务控制

虽说是在linux启动时就会默认开启此服务,但相应的服务控制也是需要了解的,计划任务相应的服务是crond.service。

[root@linus ~]# systemctl stop crond.service 
[root@linus ~]# systemctl start crond.service 
[root@linus ~]# systemctl status crond.service 

cron -e 编辑时的语法:
分为7个字段:分 时 日 月 周 用户 命令

分:0-59取值
时:0-23取值,24点即使0点
日:1-31取值
月:1-12取值,或者直接月份的英文单词
周:0-6取值,0或者7表示星期天

特殊符号的含义:
* : 任意/每(非常常用)
/:指定时间的间隔频率;*/10=每隔十分钟(位于分字段);0-23/2=每隔两小时
-:代表从某个数字到某个数字:8-17=8号到17号(日字段)
,:分开几个离散的数字:6,10-13,20=6号,10号到13号,20号(日字段)

1      *       *         *     *     ls  #指定每1分钟执行一次ls命令
20     5       *         *     *     ls  #指定每天的 5:20 执行ls命令 
30     7       8         *     *     ls  #指定每月8号的730分执行ls命令

简单实例

例1:以root用户,创建和执行计划任务,查看任务并删除

[root@linus ~]# crontab -u root -e
1 * * * * root echo "hello world" 
[root@linus ~]# crontab -l
1 * * * * root echo "hello world" 
[root@linus ~]# crontab -r	#默认删除最上面一列计划
[root@linus ~]# crontab -l
no crontab for root

注:也可直接在/var/spool/cron/下创建文件,并将其计划写入其中,也可执行计划任务,但为了避免出错,不建议直接编辑文件。

例2:每周日晚上11点进行备份系统日志文件

[root@linus ~]# crontab -e
* 23 * * 7 cp /var/log/messages /backup/system_log.txt
* [root@linus ~]# crontab -l
* 23 * * 7 cp /var/log/messages /backup/system_log.txt

注:若不指定创建任务的用户,和执行此计划任务的用户,默认都是当前用户执行。

例3:以root用户每天晚上十点执行脚本计划

[root@linus ~]# crontab -e
* 22 * * * sh /script/backup.sh
* [root@linus ~]# crontab -u root -l
* 22 * * * sh /script/backup.sh

注:登录用户为root,查看用户即是我们创建的计划任务

例4:以zhangsan普通用户的身份在每天下午三点在其目录下创建a.txt文件

[root@linus ~]# crontab -u zhangsan -e
* 15 * * * zhangsan touch /home/zhangsan/1.txt
[root@linus ~]# crontab -u zhangsan -l
* 15 * * * zhangsan touch /home/zhangsan/1.txt
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!