Linux[crontab命令]–管理定时任务

定时任务的软件的种类:

  • 1、Linux操作系统自带的软件:crontab
  • 2、第三方的定时任务软件:atd、anacron
  • 3、WEB定时软件:PPGo_Job
  • 4、基于etcd的定时任务系统

下面了解 Linux操作系统自带的软件:crontab。

cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/目录。它同样也会检查 /var/spool/cron/ 目录。

一、crontab命令

crontab命令来自英文词组“cron table”的缩写,其功能是管理定时计划任务。

用户只要能够按照正确的格式(分、时、日、月、星期、命令)写入到配置文件中,那么就会按照预定的周期时间自动地执行下去。

1、定时目录

cron默认配置了调度任务,分别为:hourly、daily、weekly、mouthly,目录分别为:

/etc/cron.d/	将所有的脚本文件放在此处,并从 /etc/crontab 文件中调用它们。
/etc/cron.daily/	运行需要 每天 运行一次的脚本
/etc/cron.hourly/	运行需要 每小时 运行一次的脚本
/etc/cron.monthly/	运行需要 每月 运行一次的脚本
/etc/cron.weekly/	运行需要 每周 运行一次的脚本

2、Crontab日志路径

/var/log/cron目录中只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则 Linux会每次都发邮件到该用户下。

[root@centos7 local]# ll /var/log/cron*
-rw------- 1 root root 10876 Oct  9 16:04 /var/log/cron
-rw------- 1 root root 50521 Sep 17 03:01 /var/log/cron-20230917
-rw------- 1 root root 50964 Sep 24 03:01 /var/log/cron-20230924
-rw------- 1 root root 50524 Oct  1 03:01 /var/log/cron-20231001
-rw------- 1 root root 50563 Oct  8 03:01 /var/log/cron-20231008

3、定时任务配置文件

/etc/crontab文件

Crontab命令在线验证工具:https://tool.lu/crontab

在这里插入图片描述

[root@centos7 local]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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

[root@centos7 local]#

4、crontab命令

基本语法格式:crontab [参数] [对象]

常用参数:

  • -e:编辑定时任务(默认是当前用户)。
  • -l:查看定时任务任务列表(默认是查看当前用户的定时任务)。
  • -r:删除定时任务(默认是当前用户)。
  • -i:删除前询问用户是否确认。
  • -u:设置用户名,指定用户名查看。

示例如下:

[root@centos7 local]# crontab -l
46 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

注意:crontab -l显示 no crontab for root,解决办法:

在 root 用户下输入 crontab -e,按ESC,然后:wq回车。再次输入crontab命令就行了。

主要原因是由于Liunx服务器 第一次使用 crontab ,还没有生成对应的文件导致的,执行了 编辑(crontab -e)后 就生成了这个文件,即初始化一下就行。

二、示例

使用 crontab定时任务实现备份功能并保留最近10天的备份副本,备份文件夹采用日期格式。

[root@centos7 local]# tree ./temp1
./temp1
├── files
│   ├── demo.log
│   └── xxx_dir
└── test1.log

2 directories, 2 files

1、编写shell脚本

创建备份文件夹(文件夹日期格式),然后复制相关文件到备份文件夹中,最后删除10天之前的备份文件夹。

[root@centos7 temp2]# cat ./xxx_backup1.sh
#!/bin/bash
#
# This script is executed at the end of each multiuser runlevel. Make
# sure that the script will "exit 0" on success or any other value on
# error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

DATE=`date +%Y-%m-%d`

# create backup dir
mkdir /usr/local/temp2/xxx_backup/${DATE}


# backup file
cp -rf /usr/local/temp1/files/        /usr/local/temp2/xxx_backup/${DATE}/
cp -f  /usr/local/temp1/test1.log     /usr/local/temp2/xxx_backup/${DATE}/

# find and delete file(time lt now-10)
find /usr/local/temp2/xxx_backup/ -maxdepth 1 -mtime +10 -type d -exec rm -rf {} \;

exit 0
[root@centos7 temp2]#
# 分配权限
[root@centos7 temp2]# chmod 777 xxx_backup1.sh

可以手动执行脚本测试。

[root@centos7 temp2]# tree
.
├── xxx_backup
└── xxx_backup1.sh

1 directory, 1 file
# 手动执行脚本
[root@centos7 temp2]# ./xxx_backup1.sh
[root@centos7 temp2]# tree
.
├── xxx_backup
│   └── 2023-10-10
│       ├── files
│       │   ├── demo.log
│       │   └── xxx_dir
│       └── test1.log
└── xxx_backup1.sh

4 directories, 3 files

2、添加定时任务

编辑定时任务配置文件(/etc/crontab)或者使用 crontab -e命令都可以添加定时任务。

(1)编辑定时任务配置文件(/etc/crontab)。保存即可,定时执行ok。

[root@centos7 temp2]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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


09 0 * * *   root /usr/local/temp2/xxx_backup1.sh
18 * * * *   root echo “Have a break now. vi crontab======18=====>> /usr/local/temp1/test1.log
[root@centos7 temp2]#

(2)使用 crontab -e命令添加下面内容保存即可,定时执行ok。

[root@centos7 temp2]# crontab -e
crontab: installing new crontab
[root@centos7 temp2]# crontab -l
40 * * * *   /usr/local/temp2/xxx_backup1.sh
40 * * * *   echo “Have a break now. crontab -e ======40=====>> /usr/local/temp1/test1.log
[root@centos7 temp2]#

– 求知若饥,虚心若愚。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux crontab是一种定时任务管理工具,可以在指定的时间自动执行一些命令或脚本。它可以帮助我们自动化一些重复性的工作,提高工作效率。通过编辑crontab文件,我们可以设置定时任务的执行时间、执行命令或脚本等参数。在Linux系统中,crontab是非常常用的工具之一。 ### 回答2: Linuxcrontab是一种用于执行定时任务的工具,可以自动化地在指定时间执行命令或脚本。下面给出一些关于crontab的基本知识: 1. crontab是一个命令,用于创建、删除和查看用户的定时任务列表。可以通过`crontab -e`命令编辑当前用户的crontab文件,通过`crontab -l`命令查看当前用户的定时任务列表,通过`crontab -r`命令删除当前用户的定时任务列表。 2. crontab文件是用户的定时任务列表,它是一个纯文本文件,存储了一系列用于定时执行的命令或脚本。每行都表示一个定时任务,可以指定任务的执行时间和要执行的命令。 3. crontab文件的格式是:`分 时 日 月 星期 命令`,其中分别表示分钟、小时、日期、月份、星期和要执行的命令。 4. 分、时、日、月、星期可以使用具体的数字表示,也可以使用特殊字符表示。特殊字符包括:`*`表示所有值,`/`表示间隔值,`-`表示范围值,`,`表示多个值。 5. crontab文件的命令部分可以是一个要执行的命令,也可以是一个要执行的脚本。脚本可以是任何可执行的文件,可以用绝对路径或相对路径指定。 6. crontab定时任务可以精确到分钟级别,可以实现很多常见的定时任务,比如每天执行一次、每小时执行一次等。 7. crontab的日志文件位于`/var/log/cron`,记录了定时任务的执行情况,可以用于排查问题。 总结来说,Linuxcrontab是一个非常强大和灵活的定时任务管理工具,能够帮助用户自动化执行命令和脚本,提高工作效率。但是使用时需要注意格式和时间设置,确保定时任务能够按预期执行。 ### 回答3: Crontab是在Linux操作系统上用于定时执行任务的工具。它允许用户按照自定义的时间表来安排任务的运行,可以是每天、每周、每月或者其他特定的时间间隔。 要使用Crontab,我们可以通过命令行来编辑用户的Crontab文件。命令是`crontab -e`,这将会打开一个文本编辑器,并显示已经安排的任务列表。每一行都表示一个要运行的任务,其中包括任务的执行时间和要执行的命令Crontab文件中的每一行都遵循一定的格式。格式由若干个时间和命令组成,用空格或制表符分隔。时间字段被分成了五个部分,按顺序分别代表分钟、小时、日期、月份和星期。通配符\*可以用来指定所有可能的值。 例如,如果我们想要每天早上8点运行一个命令,我们可以添加一行`0 8 * * * command`到Crontab文件中。这将会在每天的8点整执行所指定的命令。我们还可以使用逗号来指定多个值,比如`0 8,12 * * * command`表示每天的8点和12点都会执行命令。 除了指定具体的时间外,我们还可以使用特殊的字符串来表示一些常用的时间间隔。比如`@reboot`表示在系统启动时运行任务,`@daily`表示在每天的午夜运行,`@weekly`表示在每周的周日午夜运行,`@monthly`表示在每月的第一天午夜运行等等。 总的来说,Crontab是一个非常强大和灵活的工具,可以帮助我们自动化很多重复性的任务,提高工作效率。通过简单地编辑Crontab文件,我们可以安排任务在特定的时间点自动运行,无需人工的干预。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值