linux-定时任务调度

举报
晨犀 发表于 2024/10/24 23:08:26 2024/10/24
【摘要】 crond 任务调度crontab 进行 定时任务的设置 概述任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等.2.个别用户工作:个别用户的个性化需求,可能希望执行某些程序,比如对mysql数据库的备份。示意图 基本语法crontab[选项] 常用选项 快速入门设置任务调度文件:/etc/crontab设置个人任...

crond 任务调度

crontab 进行 定时任务的设置

概述

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等.

2.个别用户工作:个别用户的个性化需求,可能希望执行某些程序,比如对mysql数据库的备份。示意图
image.png

基本语法

crontab[选项]

常用选项

image.png

快速入门

设置任务调度文件:/etc/crontab

设置个人任务调度。执行 crontab -e 命令。

接着输入任务到调度文件

如:*/lls-l /etc/>/tmp/to.txt命令

意思说每小时的每分钟执行1s-1/etc/>/tmp/to.txt

  • 参数细节说明
    5个占位符的说明
    image.png

  • 特殊符号说明
    image.png

  • 特殊时间执行案例
    image.png

应用实例

  • 案例 1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate 文件中
    */ldate>>/tmp/mydate

  • 案例 2:每隔1分钟,将当前日期和日历都追加到 /home/mycal 文件中

    步骤:
    (1)vim /home/my.sh 写入内容 date >>/home/mycal 和 cal >> /home/mycal

    (2)给 my.sh 增加执行权限,chmod u+x /home/my.sh

    (3)crontab -e 增加 /l*** /home/my.sh

  • 案例 3:每天凌晨 2:00 将 mysql 数据库 testdb备份到文件中。

    提示:指令为mysqldump -u root -p 密码 数据库 >/home/db.bak

    步骤(1)crontab -e
    步骡(2)0 2*** mysqldump -u root -proot testdb >/home/db.bak

crond 相关指令

conrtab -r:终止任务调度。

crontab -1:列出当前有那些任务调度。

service crond restart [重启任务调度]

at 定时任务

基本介绍

1)at命令是一次性定时计划任务,at的守护进程 atd 会以后台模式运行,检查作业队列来运行。

2)默认情况下,atd 守护进程每 60 秒检查作业队列。有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。

3)at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。

4)在使用 at 命令的时候,一定要保证 atd 进程的启动,可以使用相关指令来查看

ps -ef | grep atd //可以检测 atd 是否在运行

5)示意图

image.png

at 命令格式

at[选项] [时间]
Ctrl+D 结束 at 命令的输入,输出两次。

at 命令选项

image.png

at时间定义

at指定时间的方法:

  1. 指定具体时间
    • 使用 hh:mm 格式来指定同一天的特定时间。如果所给时间已经过去,则任务将在第二天的同一时间执行。
    • 例如:at 16:00 today 表示在今天下午4点运行命令。
  2. 使用模糊时间表达
    • 可以使用 noon(中午12:00)、midnight(午夜00:00)这样的关键词。请注意,tea-time 不是一个标准的 at 命令关键词,但它可以被一些系统识别为下午4点。
    • 例如:at midnight tomorrow 表示在明天午夜运行命令。
  3. 使用12小时制
    • 如果使用12小时制,需要加上 am 或者 pm
    • 例如:at 12pm today 表示在今天中午12点运行命令。
  4. 指定具体日期和时间
    • 可以使用 mm/dd/yy 或者 dd.mm.yy 格式来指定具体的日期。
    • 例如:at 04:00 03/01/21 表示在2021年3月1日早上4点运行命令。
  5. 使用相对时间
    • 使用 now + count time-units 的格式。注意这里的 time-units 应该是 minuteshoursdaysweeks
    • 例如:at now + 5 minutes 表示在现在时间之后5分钟运行命令。
  6. 使用今天或明天
    • 直接使用 today 或者 tomorrow
    • 例如:at 10:00 tomorrow 表示在明天上午10点运行命令。

示例

  • 如果你想在明天下午4点运行一个命令,可以这样写:
    • at 16:00 tomorrow

注意事项

  • 在使用 at 命令时,todaytomorrow 关键词通常不需要加上日期,因为它们默认指的是今天的日期。
  • at 命令允许你输入多行命令。在输入 at 命令后,按下回车键进入命令编辑模式,输入完所有命令后输入 . 并按回车键来结束命令输入。

总结

通过 crondat 命令,Linux 用户可以轻松地安排周期性的任务或一次性任务。crond 更适合长期重复的任务,而 at 适用于一次性任务。了解这两种工具的使用方法可以帮助提高系统的自动化管理水平。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。