之前我们有了解到一次性工作at,在linux的作业管理中我们还会使用到周期性的管理工作。例如,每周或者每天我们希望执行一个脚本。这时我们就要使用周期性的作业调度crontab。

我们先来了解一下与crontab命令相关的配置文件。既然是要了解配置文件我们当然是去/etc目录下找了。

/etc/cron.deny:用于设置不允许那些用户使用crontab。系统默认会生成的文件。如果有需要你也可以自己手动生成/etc/cron.allow文件,用于设定那些用户可以使用crontab命令。cron.allow的运行级别比cron.deny高,即两个文件同时存在并且文件里面的设置有冲突的时候,以cron.allow为准。

/etc/crontab:这个是例行工作调度的一个配置文件。我们需要执行的周期性的例行工作,除了可以用crontab命令产生以外,也可以通过编辑/etc/crontab文件来实现。当我们使用crontab命令的时候相关的作业信息会保存在/var/spool/cron下,与创建用户同名的文件中。我们也可以通过写/etc/crontab配置文件的方式来设置周期性任务。

/etc/cron.d:这个目录下面放置了很多与系统相关的周期性任务。

/etc/cron.daily:这个目录下都是放的脚本文件,每天都会被执行的脚本放在这个目录下,通过/etc/crontab中的配置来调用。/etc/cron.hourly目录下放置每个小时都会执行脚本。/etc/cron.monthly放置每个月会被执行的脚本。/etc/cron.weekly放置每周被执行的脚本。

总结一下设置周期作业的三种方式。周期性任务必须要crond这个守护进程来调度。crond这个daemon会检查/etc/crontab,/etc/cron.d/,/var/spool/cron。

第一、通过crontab命令实现。一旦设置会在/var/spool/cron生成同用户名一致的文件。文件的内容为设置的周期任务的内容。所有用户都可以通过这种方式来制定周期性任务。

第二、配置/etc/crontab调度/etc/cron.hourly,/etc/cron.daily,/etc/cron.monthly,/etc/cron.weekly下面所存放的脚本。一般与系统运营维护相关的周期行任务采用这种方式。

第三、/etc/cron.d目录下的文件,这里的文件同/var/spool/cron下的文件类似,但是一般都是存放同系统相关的周期性任务,其配置的一般都不是脚本而是调用的系统命令。

第一种方式:通过crontab命令设置周期行任务

crontab [-elr] [file]

-e:编辑周期性任务。

-l:列出周期性任务。

-r:删除周期性任务。

-u:管理员用于现实其他用户的周期行任务。

crontab -e:当我们在命令提示符下输入如下命令以后,会为我们打开一个vim的文本编辑程序。这个时候我们就可以开始指定我们周期行任务执行的时间和任务的内容了。想记录流水账一样,每一行代表一个周期性任务。

mintue    hour    date    month    week    command

范围    0-59        1-24    1-31    1-12        0-7(0,7都表示星期天)

*:如果相应位为*表示不做限制。

,:代表分隔时段。比如0 3,6 * * * command。表示每天的3:00和6:00执行。

/n:代表每间隔n个单位的时间执行,比如*/10 * * * * command。表示每过10分钟执行一次。

-:代表指定时间范围。15 21-23 * * * command。表示每天的九点一刻,十点一刻,十一点一刻执行

我们希望每天的晚上10点将日志文件发到root的邮箱。

当我们设置好这个周期性任务以后我们可以在/var/spool/cron/下看到同用户同名的一个文件,文件的内容即周期任务的设置内容

crontab -l所显示的结果同上面的结果一样。需要注意的是crontab -l只显示当前用户的周期性任务,如果你是一个管理员你需要显示其他用户的管理性任务,你需要使用crontab -u username -l。来显示其他用户的周期性任务。并且你通过配置/etc/crontab和/etc/cron.d所产生的周期性任务是没有办法用crontab -l来显示的。

crontab -r用于删除周期性的任务。需要注意的是这个命令会删除所有的周期性任务,如果你要删除的是其中的一条周期性任务,你需要使用crontab -e命令打开编辑器,然后再删除相应的条目。

crontab命令还可以通过读取文件的方式来执行。我们可以将需要执行的周期任务写入文件中,然后执行crontab filename。但是需要注意的是,你写入的内容同你在执行crontab -e后写入的内容是一致的。即时间的后面不能跟用户(这里有别于/etc/cron.d和/etc/crontab设置周期行任务,/etc/cron.d目录下的文件和在/etc/crontab中设置周期性任务,时间后面必须跟用户名)

第二种方式。将写好的周期性任务文本放到/etc/cron.d目录下。

我们还是以test这个测试文件为例,在将test这个文件拷贝到/etc/cron.d目录下之前,我们需要对test文件先做下修改,在时间的后面增加上一个用户名称。

这样一个周期性任务就创建好了,但是通过这种方式创建的周期性任务,用crontab -l是没有办法查看到的,这个一定要注意。

第三种方式。通过配置/etc/crontab。或者将需要定期运行的脚本文件放到相应的目录。

让先来看看/etc/crontab

文件开头定义了环境的变量,默认使用的SHELL,默认的路径,邮箱,以及家目录。可以看到PATH变量定义了4个目录,如果周期性任务所使用到的命令不在PATH定义的路径中,一定要使用绝对路径。如果我们所执行的周期性任务会有标出的输出信息或者有错误的输出,那么系统会发邮件给MAILTO中定义的用户。所以我们之前用到的test中定义的周期性任务也可以写到/etc/crontab中。

但是当我们用crontab -l的时候是看不到这个任务的哟。

/etc/crontab这个配置文件还有更高级的玩法就是将我们需要运行的脚本放到相应的目录中,然后在/etc/crontab中设置好时间和目录,系统将定期去执行指定目录中的脚本,在CentOs6.3中系统默认给我们创建了/etc/crond.daily,/etc/cron.hourly,/etc/cron.monthly,/etc/cron.weekly。四个目录用于分别存放每天,每小时,每月,每周要运行的脚本。

例如:

然后我们在/etc/cron.hourly目录下写一个test脚本,并且给这个脚本可执行的权限

一个周期性的任务就设置好了,crontab -l同样是无法显示有这个任务的。run-parts是一个脚本,位于/user/bin下,所以不使用绝对路径也能运行,这个脚本会去运行指定目录中的脚本。

所以当我们怀疑我们主机可能被别有用心的人布置了周期行任务,只是用crontab -l是不够的,我们还要查询一下我们的配置文件是否有不良信息。

转载于:https://blog.51cto.com/747720939/1351780

周期性工作crontab相关推荐

  1. Go 学习笔记(77)— Go 第三方库之 cronexpr(解析 crontab 表达式,定时任务)

    cronexpr 支持的比 Linux 自身的 crontab 更详细,可以精确到秒级别. ​ 1. 实现方式 cronexpr 表达式从前到后的顺序如下所示: 字段类型 是否为必须字段 允许的值 允 ...

  2. CentOS安装crontab

    CentOS安装crontab: yum install crontabs 说明: service crond start //启动服务 service crond stop //关闭服务 servi ...

  3. Linux crontab 命令基本说明

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

  4. linux定时器(crontab)实例

    linux实验示例----实现每2分钟将"/etc"下面的文件打包存储到"/usr/lobal"目录下 ·Step1:编辑当前用户的crontab并保存 终端输 ...

  5. cron 工具 每分钟_计划任务 cron和crontab

    很多时候,我们需要定时执行某个应用或者某段脚本,在linux上,可以使用cron服务,它有点类似于Windows上的任务计划程序.这篇文章将简单介绍cron的使用. 1. crond和crontab ...

  6. linux刷新指定URL脚本,【图片】linux下crontab定时执行本地脚本和定时访问指定url【不要牧师吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 8. 任务调度设置文件的写法 可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/ ...

  7. crontab安装_django-crontab实现服务端的定时计划任务

    图/文:迷神 我们做django的项目开发的时候,也需要实现一些类似 Linux 中crontab 的功能,定时执行计划任务.虽然使用linux ,自带了crontab实现,但是毕竟是django 开 ...

  8. Java Spring @Scheduled 定时任务crontab表达式设置

    Java Spring @Scheduled 定时任务crontab表达式设置 1. Cron详解 2. 例子 参考 1. Cron详解 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或 ...

  9. crontab修改默认编辑器

    $ sudo select-editor 选择3或者4 然后再次打开 crontab -e 就会是vim的方式了. 转载于:https://www.cnblogs.com/jiqing9006/p/1 ...

最新文章

  1. 南开大学教授:科研开源的行动倡议!
  2. KerGNNs:结合Graph kernels的可解释GNN
  3. 手工部署Sqlserver CLR程序集
  4. 通过防火墙堵住×××安全漏洞
  5. 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!...
  6. 最简单的c语言的编程题目,编程列入考题
  7. android sonar 简书,SonarQube对ios、android代码检测
  8. (pytorch-深度学习系列)网络中的网络(NiN)
  9. jquery 检查 金钱类型
  10. 2013年最新十大xp系统下载排行榜-无极系统下载站
  11. matlab需要什么运行库,运行库是什么?常用软件运行库都有哪些?
  12. 技术管理岗岗位职责总结
  13. 一个纸杯子的测试用例
  14. 【C语言】简单猜字游戏
  15. 百度地图JSAPI标注旋转
  16. apache-poi之Excel使用API
  17. 免费SSL证书(https网站)申请
  18. 群晖aria2 bt没速度_当苹果用户拥有NAS后可以做什么?群晖DS220J体验测评
  19. boost库和Eigen库冲突的解决
  20. 用通俗易懂的方式讲解Transformers

热门文章

  1. 多个高危漏洞可导致 Chrome 浏览器被黑
  2. VMware SD-WAN 修复6个漏洞,可关闭整个企业网络
  3. 倾斜摄影实景三维建模效果不好?可能有这些原因!
  4. 企业打开云HBase的正确方式,来自阿里云云数据库团队的解读
  5. ios 7.1.2 拍照声音
  6. [老生常谈] Linux 下读取windows共享目录
  7. Report_客制化报表输出Excel后去0问题(案例)
  8. CentOS Repos
  9. 苹果发布新应用Find My Friends,轻松追踪朋友和家人的所在位置
  10. 利用容器来拆分字符串