Linux crontab 命令安装使用

这篇具有很好参考价值的文章主要介绍了Linux crontab 命令安装使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

链接:Linux 公社

Linux crontab 命令

  • crontab命令常见于Unix和Linux的操作系统中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于/var/spool/cron,/etc/crontab,/etc/cron.d配置文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。crond 常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs

注意
新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

linux 任务调度的工作主要分为以下两类

  1. 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  2. 个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

1. 安装Crontab

  • 失败:
[root@CentOS ~] yum -y install vixie-cron
[root@CentOS ~] yum -y install crontabs

说明:
vixie-cron 软件包是 cron 的主程序;
crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

  • 成功
#安装crontab
[root@CentOS ~] yum install cronie

2. crontab服务启动与关闭

  1. cron 是 linux 的内置服务,可以用以下的方法启动、关闭这个服务:
service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态
  1. 要把cron设为在开机的时候自动启动

两种方式:
1、在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可
2、在CentOS系统中加入开机自动启动: chkconfig --level 345 crond on【在运行级别3、4、5上让crond服务开机自动启动】链接: chkconfig命令介绍

  1. crontab操作
crontab -l //查看当前用户的crontab;
crontab -e //编辑crontab;
crontab -r //删除crontab.

3. 配置文件

3.1 全局配置文件

在/etc目录下面存在

  1. cron.hourlycron.dailycron.weeklycron.monthlycron.d五个目录
  2. crontab,cron.deny二个文件

cron.daily            是每天执行一次的job
cron.weekly         是每个星期执行一次的job
cron.monthly       是每月执行一次的job
cron.hourly          是每个小时执行一次的job
cron.d                  是系统自动定期需要做的任务
crontab                是设定定时任务执行文件
cron.deny            文件就是用于控制不让哪些用户使用Crontab的功能

3.1.1 crontab文件

cron 的主配置文件是 /etc/crontab,它包括下面几行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# 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
# run-parts举例
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

解释:
前四行是用来配置 cron 任务运行环境的变量。
SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);
PATH 变量定义用来执行命令的路径。
cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。
如果 MAILTO 变量被定义为空白字符串(MAILTO="")电子邮件就不会被寄出。
HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

3.1.2 cron.allow / cron.deny文件:

/etc/cron.allow/etc/cron.deny 文件被用来限制对 cron 的使用
注意:

  1. 这两个使用控制文件的格式都是每行一个用户
  2. 两个文件都不允许空格
  3. 如果使用控制文件被修改了,cron 守护进程(crond)不必被重启
  4. 使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取
  5. 无论使用控制文件中的规定如何,root 都总是可以使用 cron
  6. 如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略
  7. 如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron
  8. 如果两个文件都不存在只有root可以提交任务

总结:linux的cron配置文件中cron.deny 和cron.allow 只能有一个文件存在或者都不存在,里面没有内容不会发生什么事,其中一个文件写了内容才会生效,同时存在且都有内容时,cron.allow优先

cron.allow文件和crontab命令的关系
同root一样,普通用户也可以使用cron来重复运行程序。要执行的任务通过crontab命令来提交给cron执行。root通过/var/adm/cron/cron.allow文件来控制谁有权使用crontab命令。如果用户的名字出现在cron.allow文件中,他就有权使用crontab命令。如果cron.allow文件不存在,系统会检查/var/adm/cron/cron.deny文件来确定是否这个用户被拒绝存取。如果两个文件都存在,cron.allow有优先权。如果两个文件都不存在,只有root可以提交任务。如果cron.deny文件为空文件,所有的用户都可以使用crontab.


3.2 用户配置文件

每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容.


4. crontab 命令

功能:设置计时器。
语法:crontab[-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
解释:cron 是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:Minute Hour Day Month DayOFWeek Command

参数
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u <用户名称> 指定要设定计时器的用户名称。

格式:

*       *        *        *        *           command
minute hour day month week command
星期 命令
  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

特殊字符:
星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。
逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。
中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次

例子:文章来源地址https://www.toymoban.com/news/detail-400818.html

##每月每天凌晨3点30分和中午12点20分执行test.sh脚本
30 3,12 * * *  /home/test.sh           

##每月每天每隔6小时的每30分钟执行test.sh脚本
30 */6 * * *  /home/test.sh

##每月每天早上8点到下午18点每隔2小时的每30分钟执行test.sh脚本
30 8-18/2 * * * /etc/init.d/network restart

##每月每天晚上21点30分执行test.sh脚本
30 21 * * *  /etc/init.d/network restart

##每月1号、10号、22号凌晨4点45分执行test.sh脚本
45 4 1,10,22 * * /etc/init.d/network restart

##8月份周一、周日凌晨1点10分执行test.sh脚本
10 1 * 8 6,0 /etc/init.d/network restart

##每月每天每小时整点执行test.sh脚本
00 */1 * * *  /etc/init.d/network restart

注意:
#写法不规范,分钟应该写成 00
* 23,00-07/1 * * * /etc/init.d/network restart  

 ##强调,周和日尽量不要同时使用,否则达不到想要的效果
 00 11 * 4 1-3 /etc/init.d/network restart 
 
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

到了这里,关于Linux crontab 命令安装使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux命令之crontab详解

    提交和管理用户的需要周期性执行的任务 更多linux命令详解:linux命令在线工具 Linux 教程:VitePress编写的Linux教程 crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进

    2024年02月15日
    浏览(30)
  • Linux crontab命令定时任务详解

            crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件,与Windows下的计划任务类似。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任

    2024年02月04日
    浏览(39)
  • Linux--crontab命令详解--循环执行的计划任务

    循环执行任务是由cron(crond)这个系统服务来控制的。用户想要建立循环的计划任务时,使用的是crontab这个命令,为了避免安全性的问题,和at一样,我们可以限制使用crontab的账号,可以使用的配置文件有: /etc/cron.allow 将可以使用crontab的账号写入,不在这个文件中的账户则不能使用cr

    2024年02月16日
    浏览(44)
  • Linux Crontab 使用详解

    crontab 是一个定时执行任务的工具,在 Linux 系统中广泛使用。它可以让用户在指定的时间自动执行某个指令或脚本,例如自动备份数据、清除日志、定时运行程序等。 crontab 依赖于系统 crond 守护进程(又称 cron 服务),该服务默认在后台运行,并周期性地检查用户的 crontab

    2024年02月15日
    浏览(24)
  • Crontab(定时任务)使用: Linux-Centos7使用crontab制定定时任务,定时执行某任务

    参考:https://blog.csdn.net/m0_49605975/article/details/120701771 1.用yum命令安装Crontab 2.启动,关闭,重启 3.设置开机启动 1.设置定时任务-进入编辑模式 -和vim操作一至 2.查看定时任务列表 3.添加定时任务 样例: 添加一个定时任务,定时清空某个文件夹里面日志文件的内容 3.1 编写一个清

    2024年02月01日
    浏览(72)
  • Linux 使用 crontab 定时拆分日志、清理过期文件

    @ 目录 前言 简介 一、准备工作 1.1 创建写入脚本 1.2 设置执行权限 1.3 添加定时任务 1.4 配置生效 二、Tomcat日志 按每天分割 2.1 创建一个 sh文件 2.2 设置执行权限 2.3 设置crontab指令,指定每日定时任务 2.4 配置生效 总结 请各大网友尊重本人原创知识分享,谨记本人博客:南国以

    2024年04月08日
    浏览(39)
  • Linux学习笔记-Ubuntu下使用Crontab设置定时任务

    白衣沽酒绮罗生 百代繁华一朝都,谁非过客;千秋明月吹角寒,花是主人。 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο

    2024年02月04日
    浏览(40)
  • Linux命令之ln -s命令(软链接)

    Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然

    2024年02月05日
    浏览(45)
  • Linux怎么设置软链接(ln命令)

    在Linux中,软链接(Symbolic Link),它可以指向另一个文件或目录。类似于Windows中的快捷方式。 主要作用:文件路径简化:通过创建软链接,可以将长而复杂的文件路径简化为一个易于记忆和使用的链接路径。这对于频繁访问的文件或目录特别有用 文件 创建快捷放式:则直接

    2024年02月05日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包