详解Linux定时任务Crontab的介绍与使用

 更新时间:2022年10月13日 09:06:23   作者:Mrwhite86  
linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题。本文主要介绍了定时任务Crontab的使用,需要的可以学习一下

一.cron介绍

linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题。

1. var/spool/cron/

目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名

2. _/etc/crontab

这个文件负责调度各种管理和维护任务。

3. /etc/cron.d/

这个目录用来存放任何要执行的crontab文件或脚本。

我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

二.crontab的使用

我们常用的命令如下:

crontab [-u username]    //省略用户表表示操作当前用户的crontab

1. -e (编辑工作表)

2. -l (列出工作表里的命令)

3. -r (删除工作作)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

  • * 取值范围内的所有数字
  • / 每过多少个数字
  • - 从X到Z
  • ,散列数字

三.常见定时任务设置

实例1:每1分钟执行一次myCommand

<strong>* * * * * myCommand</strong>

实例2:每小时的第3和第15分钟执行

<strong>3,15 * * * * myCommand</strong>

实例3:在上午8点到11点的第3和第15分钟执行

<strong>3,15 8-11 * * * myCommand</strong>

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

<strong>3,15 8-11 */2 * * myCommand</strong>

实例5:每周一上午8点到11点的第3和第15分钟执行

<strong>3,15 8-11 * * 1 myCommand</strong>

实例6:每晚的21:30重启smb

<strong>30 21 * * * /etc/init.d/smb restart</strong>

实例7:每月1、10、22日的4 : 45重启smb

<strong>45 4 1,10,22 * * /etc/init.d/smb restart</strong>

实例8:每周六、周日的1 : 10重启smb

<strong>10 1 * * 6,0 /etc/init.d/smb restart</strong>

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

<strong>0,30 18-23 * * * /etc/init.d/smb restart</strong>

实例10:每星期六的晚上11 : 00 pm重启smb

<strong>0 23 * * 6 /etc/init.d/smb restart</strong>

实例11:每一小时重启smb

<strong>0 */1 * * * /etc/init.d/smb restart</strong>

实例12:晚上11点到早上7点之间,每隔一小时重启smb

<strong>0 23-7/1 * * * /etc/init.d/smb restart</strong>

四.实例操作

1.文件实时写入

1) 查看定时任务状态

[root@localhost ~]#<strong>service crond status</strong>
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active <strong>(running)</strong> since Mon 2021-09-20 01:22:18 CST; 24s ago
 Main PID: 17516 (crond)
   CGroup: /system.slice/crond.service
           └─17516 /usr/sbin/crond -n

2) 关闭/开启定时任务

[root@localhost ~]# <strong>service crond stop</strong>
Redirecting to /bin/systemctl stop crond.service
[root@localhost ~]# <strong>service crond start</strong>
Redirecting to /bin/systemctl start crond.service

3) 编辑定时任务

[root@localhost ~]# crontab -e
* * * * * echo `date '+\%Y-\%m-\%d \%H:\%M:\%S'` >> 123.txt #每分钟执行一次

4) 查看已存在的定时任务

[root@localhost ~]# crontab -l
* * * * * echo `date '+\%Y-\%m-\%d \%H:\%M:\%S'` >> 123.txt

5) 验证校验生成

[root@localhost ~]# cat 123.txt 
2021-09-20 01:13:01
2021-09-20 01:14:01
2021-09-20 01:15:01

2. 定期清理对应目录下的文件

1) 预制数据:

[root@localhost test20210920]# echo abcdefg | tee -a file{1..5}.log
abcdefg
[root@localhost test20210920]# du -sh *
4.0K    file1.log
4.0K    file2.log
4.0K    file3.log
4.0K    file4.log
4.0K    file5.log

2) 添加定时任务

[root@localhost ~]# crontab -e

* * * * * find  /root/test20210920  -type f -name '*.log' -exec cp /dev/null {} \;

3) 检查定时任务执行,1分钟左右

[root@localhost test20210920]# du -sh *
0    file1.log
0    file2.log
0    file3.log
0    file4.log
0    file5.log

4) 查看定时任务执行情况:

[root@localhost test20210920]# tail -5 /var/log/cron
Sep 20 01:56:33 localhost crontab[17797]: (root) END EDIT (root)
Sep 20 01:56:51 localhost crontab[17802]: (root) BEGIN EDIT (root)
Sep 20 01:56:54 localhost crontab[17802]: (root) END EDIT (root)
Sep 20 01:57:01 localhost CROND[17809]: (root) CMD (find  /root/test20210920  -type f -name '*.log' -exec cp /dev/null {} \;)
Sep 20 01:58:01 localhost CROND[17819]: (root) CMD (find  /root/test20210920  -type f -name '*.log' -exec cp /dev/null {} \;)

五.常见错误

1.errors in crontab file, can't install

解决方式:

因为你的crontab格式错误,即没有按照规则写

查看原命令并修正:

echo `date +"%Y-%m-%d %H:%M"` >> 123.txt

修改后正常保存:

* * * * * echo `date +"%Y-%m-%d %H:%M"` >> 123.txt

2.接以上错误:

邮件内报错:cat /var/spool/mail/root

解决方式: 

crontab内%需要转义,修复定时任务正常

* * * * * echo `date '+\%Y-\%m-\%d \%H:\%M:\%S'` >> 123.txt

以上就是详解Linux定时任务Crontab的介绍与使用的详细内容,更多关于Linux定时任务Crontab的资料请关注脚本之家其它相关文章!

相关文章

  • linux链接编译详解

    linux链接编译详解

    通过自己编写Makefile文件来实现多目标文件的链接,其实就是将gcc 编译命令写入到Makefile文件,通过执行make 指令来实现编译。这样我不需要每次都敲入gcc -指令。直接输入make就OK了。
    2014-02-02
  • linux启动dhcp服务器步骤

    linux启动dhcp服务器步骤

    在本篇文章里小编给大家整理了关于linux怎么启动dhcp服务器的相关知识点内容,需要的朋友们跟着学习下。
    2019-05-05
  • Linux全网最全面常用命令整理(附实例)

    Linux全网最全面常用命令整理(附实例)

    这篇文章主要介绍了Linux命令,是目前最全面的集合,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 在shell脚本中获取上个月最后一天的日期方法

    在shell脚本中获取上个月最后一天的日期方法

    今天小编就为大家分享一篇在shell脚本中获取上个月最后一天的日期方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Linux查看系统配置信息的命令详解

    Linux查看系统配置信息的命令详解

    Linux操作系统由Linux内核和各种外围程序组成, Linux内核是一个特殊的软件程序,用于实现CPU和内存分配,进程调度、设备驱动等核心操作,本文给大家介绍了Linux查看系统配置信息的命令,需要的朋友可以参考下
    2024-04-04
  • shell耗时计算的实现

    shell耗时计算的实现

    本文主要介绍了shell耗时计算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Linux实现文件定期本地备份/异地备份/删除备份的脚本

    Linux实现文件定期本地备份/异地备份/删除备份的脚本

    数据备份的意义就在于,当受到网络攻击、入侵、电源故障或者操作失误等事故的发生后,可以完整、快速、简捷、可靠地恢复原有系统。本文为大家准备了文件定期本地备份/异地备份/删除备份的脚本,希望对你们有所帮助
    2022-10-10
  • HBASE 常用shell命令,增删改查方法

    HBASE 常用shell命令,增删改查方法

    今天小编就为大家分享一篇HBASE 常用shell命令,增删改查方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • shell脚本学习指南[六](Arnold Robbins & Nelson H.F. Beebe著)

    shell脚本学习指南[六](Arnold Robbins & Nelson H

    这篇文章主要介绍了shell脚本学习指南[六](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以参考下
    2014-02-02
  • Shell[[]]检测某个条件是否成立

    Shell[[]]检测某个条件是否成立

    本文主要介绍了Shell[[]]检测某个条件是否成立,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论