crontab定时任务

只谈情不闲聊 提交于 2020-02-14 22:00:07

使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,

cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户cron服务的详细内容

crontab -r //删除没个用户的cron服务

crontab -e //编辑某个用户的cron服务

比如说root查看自己的cron设置:crontab -u root -l

再例如,root想删除fred的cron设置:crontab -u fred -r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

编辑/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。

需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上

service crond start

如果还需要在系统启动时加载其他服务,可以继续加上其他服务的启动命令。

比如: service mysqld start

 

格式:

Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组 成,域之间用空格或Tab分开,其中:

minutes: 分钟域,值的范围是0到59

hours: 小时域,值的范围是0到23

day of month: 日期,值的范围是1到31

month: 月份,值的范围是1到12

day of week: 星期,值的范围是0到6,星期日值为0

command: 所要运行的命令

 

如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。

如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字 本身)。

如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。

如果日期域和星期域都有值,则这两个域都有效。

 

例如

现有一份apache的访问日志文件名为access_log,请编写一个shell脚本将该日志中包含有” 10.3.136.75”的ip的所有行内容输出到一个新建文件75log中,并将其加入到定时任务中。

crontab –e

加入

(晚上11点到早上8点之间每两个小时,早上8点)

* 11-7/2,8 * * * grep access_log 10.3.136.75 >> 75log

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!