读书笔记
周期性安排进程任务
crond
第1步:service crond start [开启crond命令,默认是关闭的,打开就可以了]
工作原理:
crond 进程搜索crontab文件并载入内存
crontab文件即/var/spool/cron目录下以用户名命名的文件。
crond 进程启动后,它将首先检查是否用户设置了crontab文件,如果没有转入“休眠”状态,释放系统资源。
crond进程每分钟醒来一次,查看crontab文件决定当前是否需要执行的命令。
命令执行结束后,任何输出都将作为邮件发送给crontab的所有者。
crontab -e [-u root/yangyi] 编辑这个文件。自动保存在/var/spool/cron目录下了,如果是root用户编辑的这个文件,那么,就在/var/spool/cron就会有一个名字为root的文件表示是root创建的周期性任务。
crontab -l 将使在标准输出中[当前终端中]输出显示当前的crontab文件的内容,这是一种快捷的方式查看当前的周期性任务,免得用
[root@localhost ~]# cd /var/spool/cron
[root@localhost cron]# ll
root
[root@localhost ~]# cat root //这样每次就麻烦多了。直接crontab -l 就可以看到root中的周期性任务内容了。
crontab -r 删除当前的crontab文件
crontab文件由6部分组成
minute: 一小时的哪一分钟[0-59]
hour: 一天中的哪个小时[0--23]
day-of-mouth : 一个月中的哪一天[1--31]
month-of-year :一年中的哪一月[1--12]
day-of-week:一周的哪一天[0--6]
commands: 用户执行的一个周期性命令,也是使用命令的全路径/bin/cp 不能是cp
这6点需要注意的几点:
1.这些项都不能为空。必须填入
2.如果用户不需要指定其中的几项,那么可以使用通配符号“*”表示任何时间。
3.每个时间字段都可以指定多个值,它们可以用逗号“,”间隔。也可以5-8间隔 。 */5表示每隔5( 分、小时、周、月)
4.命令应该给出绝对路径
5.用户必须具有运行所对应命令或程序的权限。
15 3 * * 1-5 /bin/find $HOME -name core 2 > /dev/null|rm -f //每周一到周五的3点15分执行查找 用户家目录下的文件并删除
0 5 * * * /sbin/update/updatedb //每天的5点整执行跟新目录结构数据库。
30 6 * * * /somewhere/script //每天6点30 执行某某目录下的脚本。
30 21 * * wen /somewhere/script //每个星期三的21点30分,执行某某目录下的脚本。
* */2 * * * /somewhere/script //每隔2小时,执行某某目录下的脚本。
* 8-17 * * * /somewhere/script //每天的8-17点,执行某某目录下的脚本。
crond的执行结果和配置文件
crond的结果会通过邮件寄给提交这个命令的用户mail
crond的配置文件:限制哪些用户可以使用crondtab命令
/etc/cron.allow 如果这个文件存在,那么只在列在此文件中的用户才可以使用crontab命令文件如果不存在则查/etc/cron.deny
/etc/cron.deny 如果这个文件存在,则在此文件中列出的用户都不能使用crontab命令
如果两个文件都不存在,则只有root用户可以使用crontab命令。
如果这两个文件都存在,而且都为空,则所有的用户都可以使用crontab命令