每天一个Linux命令(44)crontab命令
Posted MenAngel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一个Linux命令(44)crontab命令相关的知识,希望对你有一定的参考价值。
crontab命令被用来提交和管理用户需要周期性执行的任务,与windows下的计划任务类似。
(1)用法:
用法: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(2)功能:
功能: 当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。
(3)选项参数:
1) -l 列出当前计时器的设置,查看定时运行的程序
2) -e 编辑该用户的计时器设置,设置计时器
3) -r 删除该用户的计时器设置
4) -u<用户名称> 指定要设定计时器的用户名称
(4)实例:(此命令用的不常,在此简要介绍)
1)每1分钟执行一次command
* * * * * command
2)每五分钟执行一次命令
*/5 * * * * command
3)在每天的17:00执行这个命令
00 17 * * * command
4)在8:02,11:02,14:02,17:02,20:02 执行,在8点到20点的时间内,每三个小时执行一下命令
2 8-20/3 * * * command
以后会讨论crondtab的几个用法:
*创建一个新的crontab文件:
1.进入 /var/spool/cron目录下(目录为空表明当前系统内没有任何Linux计划任务需要执行)
[root@localhost /]# cd /var/spool/cron [root@localhost cron]# ll 总用量 0
*列出crontab文件:
2.用crontab自带的命令crontab -l 发现也是没有任何东西()
[root@localhost cron]# crontab -l no crontab for root
*编辑crontab文件;
3.如果目录已经存在指定的文件(文件名为当前用户名),则crontab -e 命令编辑它,否则创建新的文件。cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次 /etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。
*/2 * * * * ls -l /home/sunjimeng/Documents > root.txt
* * * * * echo "I am MenAngel" > root.txt
*删除crontab文件;
恢复丢失的crontab文件;
(5)其他:
1.什么是Windows的计划任务?
在Windows中,系统有一项重要的“计划任务”功能,通过设置“计划任务”,你可以将每天或某一天的某个时间需要做的事拟成计划,到约定的时间,不管你在电脑上进行什么工作,系统都会提醒你或者启动你设定好的任务程序。
2.crontab的简介:
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
3.crontab文件:
crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。
4.Linux下的任务调度
Linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件:
[root@localhost /]# cat /etc/crontab 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
前三行是用来配置crond任务运行的环境变量。第一行SHELL变量指定了系统要使用哪个shell,这里是bash;第二行PATH变量指定了系统执行命令的路径;第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。
*: 表示任何时刻 ,: 表示分割 -:表示一个段,如第二端里: 1-5,就表示1到5点 /n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
用户任务调度: 用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致。
[root@localhost /]# cd /var/spool/cron [root@localhost cron]# ll 总用量 0
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
5.crond服务
1)安装crontab:
yum install crontabs
服务操作说明:
/sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置
查看crontab服务状态: service crond status
[root@localhost sunjimeng]# service crond status Redirecting to /bin/systemctl status crond.service crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled) Active: active (running) since 五 2016-05-27 23:11:47 PDT; 1 weeks 5 days ago Main PID: 1303 (crond) CGroup: /system.slice/crond.service └─1303 /usr/sbin/crond -n 5月 27 23:11:47 localhost.localdomain systemd[1]: Started Command Scheduler. 5月 27 23:11:47 localhost.localdomain crond[1303]: (CRON) INFO (RANDOM_DELAY... 5月 27 23:11:48 localhost.localdomain crond[1303]: (CRON) INFO (running with... Hint: Some lines were ellipsized, use -l to show in full.
手动启动crontab服务: service crond start
[root@localhost sunjimeng]# service crond start
Redirecting to /bin/systemctl start crond.service
查看crontab服务是否已设置为开机启动,执行命令: ntsysv
[root@localhost sunjimeng]# ntsysv
输入上述命令后,centOS弹出下面的页面:
*加入开机自动启动: chkconfig –level 35 crond on(以后再介绍)
*要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start即可。
以上是关于每天一个Linux命令(44)crontab命令的主要内容,如果未能解决你的问题,请参考以下文章