分享

LINUX下crontab定时任务工具及使用

 汉无为 2023-06-23 发布于湖北

1.简介

Crontab是一个在LinuxUnix系统中用于定时执行任务的工具。它可以让用户在指定时间执行指定命令或脚本,例如备份文件、清理日志、定期发送邮件等。Crontab的作用和功能如下:

  • 管理定时任务:Crontab可以让用户管理定时任务,包括增加、修改、删除等。

  • 定时执行命令:Crontab可以让用户在指定的时间执行指定的命令或脚本,可以设置分钟、小时、日、月、星期等不同的时间段。

  • 自动化运维:Crontab可以帮助运维人员自动化管理系统,例如定时备份数据、清理垃圾文件、监控系统状态等。

  • 提高工作效率:Crontab可以让用户在不需要手动执行命令的情况下完成一些重复性工作,提高工作效率。

2.命令格式

crontab的命令格式:

crontab [-u 用户名] [-l|-e|-r] [-i] [文件名]

其参数含义如下:

参数说明
-u指定要操作的用户的用户名,如果不指定,则默认为当前用户。
-l列出当前用户的所有定时任务。
-e编辑当前用户的定时任务。
-r删除当前用户的所有定时任务。
-i在删除定时任务时进行确认提示。
文件名指定要安装的定时任务文件,可以是一个普通文本文件,也可以是一个压缩文件。

3.文件格式及含义

crontab文件是一个文本文件,用于存储定时任务的配置信息。该文件每行包含一个定时任务的配置,每个定时任务由五个或六个字段组成,字段之间用空格或制表符分隔。

下面是一个crontab文件的例子:

# 每天凌晨1点执行备份脚本
0 1 * * * /usr/local/bin/backup.sh

# 每周一、三、五的上午10点执行清理任务
0 10 * * 1,3,5 /usr/local/bin/cleanup.sh

# 每月1号凌晨2点执行统计任务
0 2 1 * * /usr/local/bin/stats.sh

每行的含义如下:

  • 第一列为分钟数,取值范围为0~59。
  • 第二列为小时数,取值范围为0~23。
  • 第三列为日期数,取值范围为1~31。
  • 第四列为月份,取值范围为1~12。
  • 第五列为星期几,取值范围为0~7(其中0和7都表示星期日)。
  • 第六列为要执行的命令或脚本路径。

需要注意的是,crontab文件中可以使用#号注释掉一行或多行配置,以方便用户做出说明或者调试。

4.常用方法

4.1创建一个新的crontab文件

要创建一个新的crontab文件,可以按照以下步骤进行:

1)使用crontab -l命令查看当前用户的crontab文件内容,以了解已有的定时任务配置。

2)使用crontab -e命令编辑当前用户的crontab文件,添加或修改定时任务配置。按照前面提到的格式要求,每行添加一个定时任务的配置信息。编辑完成后保存并退出。

3)使用crontab -l命令再次查看当前用户的crontab文件内容,确认新的定时任务配置已生效。

例如,要添加一个每天凌晨3点执行备份脚本的定时任务,可以按照以下步骤进行:

1)执行crontab -l命令,查看当前用户的crontab文件内容。

2)执行crontab -e命令,编辑当前用户的crontab文件。在文件末尾添加以下配置信息:

0 3 * * * /usr/local/bin/backup.sh

这表示在每天凌晨3点执行/usr/local/bin/backup.sh脚本。

3)保存并退出编辑器。

4)执行crontab -l命令,查看当前用户的crontab文件内容。应该可以看到新添加的定时任务信息。

4.2编辑crontab文件

要编辑当前用户的crontab文件,可以使用下面命令:

crontab -e

该命令会打开当前用户的crontab文件进行编辑,可以添加、修改或删除其中的定时任务配置。

4.3删除crontab文件

要删除当前用户的crontab文件,可以使用下面命令:

crontab -r

该命令会删除当前用户的crontab文件,其中包含了所有的定时任务配置信息。

5.使用实例

实例1:每1分钟执行一次任务

需要每分钟执行一次/usr/local/bin/mytask.sh脚本:

* * * * * /usr/local/bin/mytask.sh
实例2:每小时的第3和第15分钟执行脚本

要在每小时的第3和第15分钟执行/usr/local/bin/mytask.sh脚本:

3,15 * * * * /usr/local/bin/mytask.sh

3,15表示第3和第15分钟都匹配。

实例3:在上午8点到11点的第3和第15分钟执行脚本
3,15 8-11 * * * /usr/local/bin/mytask.sh
实例4:每隔两天的上午8点到11点的第3和第15分钟执行脚本
3,15 8-11 */2 * * /usr/local/bin/mytask.sh
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 /usr/local/bin/mytask.sh

其中,3,15表示第3和第15分钟都匹配,8-11表示上午8点到11点都匹配,1表示星期一匹配。

实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart

其中,30表示第30分钟匹配,21表示晚上9点匹配,etc/init.d/smb restart是要执行的命令,这里是重启smb服务。

实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,7 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
*/30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
0 */1 * * * /etc/init.d/smb restart

0表示第0分钟匹配,*/1表示每隔1个小时匹配一次。

实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart

0表示第0分钟匹配,23-7/1表示晚上11点到早上7点之间匹配。

6.注意事项

在使用crontab时,需要注意以下几个方面:

1)crontab命令只能被具有超级用户权限或者已经被授权可使用该命令的用户使用。

2)定时任务的时间配置需要按照规定的格式进行,每个字段的取值范围也需要正确设置。

3)定时任务的命令或脚本需要确保可执行,并且需要使用绝对路径指定。

4)在定时任务的执行过程中,需要确保所需的环境变量和工作目录已经正确设置。

5)定时任务执行时可能会产生一些输出信息,这些信息将会被发送到用户的邮件中。如果不希望收到这些信息,可以在定时任务的命令或脚本后面使用重定向符号将输出信息重定向到/dev/null。

6)定时任务的执行时间可能会受到系统时间、时区等因素的影响,需要根据实际需要进行调整。

7)定时任务的执行时间间隔越短,系统负载越高。因此,在确定定时任务的执行时间间隔时需要考虑系统的性能瓶颈和资源限制。

8)定时任务的执行结果需要定期进行监控和分析,以确保任务能够按照预期执行,并及时发现和解决可能出现的问题。

总之,在使用crontab时需要谨慎、细心,根据实际需要进行灵活的配置和调整。

图片

学习|生活|分享|积累|永不停步


请留下你指尖的温度

让太阳拥抱你

微信:imoonrong

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多