前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Linux日常运维-任务计划(crontab)

Linux日常运维-任务计划(crontab)

作者头像
运维小路
发布2024-11-01 19:09:31
发布2024-11-01 19:09:31
6300
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

当我们有些任务需要在凌晨执行或者其他人工不方便执行的时间去执行的时候,应该怎么办呢?这里就引入了Linux一个非常重要的特性就是任务计划,它可以按照我们指定时间去执行对应的任务。

在Linux中,可以使用crontab来设置和管理任务计划。crontab是一个用于定期执行命令或脚本的工具,可以按照指定的时间间隔自动运行任务。

以下是一些常见的使用crontab来设置任务计划的步骤:

查看现有的crontab任务:使用以下命令可以查看当前用户的crontab任务列表:

代码语言:javascript
代码运行次数:0
复制
crontab -l

编辑或创建新的crontab任务:使用以下命令可以编辑或创建一个新的crontab任务:

代码语言:javascript
代码运行次数:0
复制
crontab -e

在打开的编辑器中,每行代表一个任务计划,格式如下:

代码语言:javascript
代码运行次数:0
复制
* * * * * command

例如,如果要在每天的早上8点运行一个脚本,可以使用以下行:

代码语言:javascript
代码运行次数:0
复制
0 8 * * * /path/to/script.sh

编辑完成后,保存并关闭编辑器,这里的操作方式和用vi编辑文件是一样的效果。

  • 第一个星号表示分钟(0-59)
  • 第二个星号表示小时(0-23)
  • 第三个星号表示日期(1-31)
  • 第四个星号表示月份(1-12)
  • 第五个星号表示星期几(0-7,其中0和7都表示星期日)

删除crontab任务:如果要删除当前用户的所有crontab任务,可以使用以下命令:

代码语言:javascript
代码运行次数:0
复制
#一般用的比较少,常用的是删除或者注释任务
crontab -r

注意:这将删除当前用户的所有crontab任务,请谨慎使用。

这些是设置和管理任务计划的基本步骤。可以根据具体的需求调整crontab任务的设置。

优先级说明

这五个时间单位的优先级从左到右依次降低。根据这五个时间单位的取值,可以设置不同的定时任务。例如:

  • 如果在分钟、小时、日期、月份和星期几的位置上都使用了星号(*),表示任务将在每分钟都执行。
  • 如果在分钟位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每小时的特定分钟执行。
  • 如果在小时位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每天的特定小时执行。
  • 如果在日期位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每月的特定日期执行。
  • 如果在月份位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每年的特定月份执行。
  • 如果在星期几位置上使用了特定的数字,而其他位置上使用了星号(*),表示任务将在每周的特定星期几执行。

请注意,星号(*)表示通配符,意味着该时间单位的所有取值都适用。而特定的数字表示具体的取值,例如1代表1号,2代表2点等。

根据具体需求,可以根据时间单位的优先级来设置crontab任务的时间间隔。请确保设置正确的时间间隔,以确保任务按预期执行。

每分钟,用 *

每2分钟,则用*/2

每5分钟,则用*/5

其他依次类推,绝大部分任务都是在分钟和小时2个参数进行调整。

主要用途

1.定时切割日志,删除文件

nginx等web服务器的日志轮询,然后删除过期的日志等

代码语言:javascript
代码运行次数:0
复制
#凌晨1点执行,可以跟具体的命令,也可以跟脚本路径,注意环境变量有效性
* 1 * * * * Command

2.检查进程存活

常用于各种服务,比如zk,kafka,等中间件的进程监控,如果不正常则执行启动

代码语言:javascript
代码运行次数:0
复制
#每2分钟检查一次进程是否正常,如果不正常则执行后续启动或其他动作
*/2 * * * * Command

3.定期备份

用于定期备份数据库或者备份业务文件

代码语言:javascript
代码运行次数:0
复制
#每天凌晨5点做备份数据库,或者同步文件操作
* 5 * * * Command

总结

1.Linux任务计划的规则其实很简单,只要理解到规则就可以根据自己的需要编写对应的规则。对应的规则可以直接是命令,也可以是脚本。

2.Linux任务计划是分用户的,尤其是多用户运维的服务器。

3.Linux任务计划最小粒度是分钟,如果需要更精细的角度来执行,可以通过把命令放置到脚本里面,然后通过脚本来实现秒级的粒度的控制。

4.在前面讲文件搜索的时候,我们讲过Linux有自带的几个目录,里面放置的就是根据单词提示的执行任务。这里的任务,通过crontab -l命令都是看不到的。如果有任务计划未按照预期执行,可以检查cron.deny 。

代码语言:javascript
代码运行次数:0
复制
[root@localhost ~]# ls /etc/|grep cron
cron.d/       //系统部分自带会将任务放置在里面
cron.daily/   //每天执行
cron.deny     //不允许执行任务计划的用户
cron.hourly/  //每小时执行
cron.monthly/ //每月执行
crontab       //直接编辑就可以执行
cron.weekly/  //每周执行
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 优先级说明
  • 主要用途
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档