有时候
运行一个命令(例如find)可能要等很长时间,这是我们可以让这个运行时间很长的命令或进程在后台运行。
一、周期性执行任务命令crontab
crontab是使用crond服务安排周期性
计划任务,使用service crond start/stop 开启/停止服务
1.原理
crond进程搜索crontab文件并载入内存,crontab文件即/var/spool/cron/目录下以用户名命名的文件。
crond进程启动后,它首先检查是否有用户设置了crontab文件,若没有直接转入"休眠"状态,释放系统资源。
crond每分钟醒来一次,查看crontab文件决定当前是否有需要执行的命令。
命令执行结果后,任何输出都将作为邮件发送给crontab的所有者。
2.创建crontab文件
vi test
(2)写计划内容(具体格式参考接下来的内容)
58 1 10 11 3 /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
表示在11月10号(星期三)1点58 执行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt命令
(3)提交计划任务
crontab test,然后到/var/spool/cron目录下可以看到有个该文件的副本,文件名就是用户名。
3.编辑crontab文件
crontab -e来编辑当前用户的crontab文件
crontab -e -u 用户名,指定特定用户编辑
4.crontab文件书写格式
该文件有6部分组成,每部分用空格隔开
第一部分minute:一小时中的哪一分钟[0--59]
第二部分hour:一天中的哪个小时[0--23]
第三部分day of month:一个月中的哪一天[1--31]
第四部分month of year:一年中的那一个月[1--12]
第五部分day of week:一周中的哪一天[0--6],0代表周日
第六部分commands:周期性执行的命令,需要使用命令的全路径(绝对路径)
这些项都不能为空,必须输入。
若用户不需要指定其中的几项,可以使用通配符*表示任何时间。
每个时间字段可以指定多个值,使用逗号将其隔开。
表示区域时使用-,例如5-8
用户必须具有运行计划任务对应命令或程序的权限
4.查询计划任务
crontab -l 将使在标准输出显示当前的crontab
5.删除计划任务
crontab -r 删除当前的crontab文件
6.crontab命令权限限制
crontab的配置文件cron.allow和cron.deny可以限制哪些用户可以使用crontab命令
若/etc/cron.allow文件存在,那么只有列在此文件中的用户(一行一个用户名)才可以使用crontab命令。如果这个文件不存在,则查/etc/cron.deny文件,若这个文件存在,则在此文件中列出的用户不能使用crontab命令。
若2个文件都不存在,则只有root用户能使用crontab命令
若2个文件都存在,而且均为空,则所有用户都可以使用crontab命令
7.实例
(1)每晚2:30运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
30 2 * * * /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
(2)每月1、10、22号的5:55运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
55 5 1,10,22 * * /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
(3)每周六、周日的11:14运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
14 11 * * 6,0 /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
(4)每天19到22点之间每隔30分钟运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
0,30 28-23 * * * /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
(5)每周六23点运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
0 23 * * 6 /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt