「Linux 奏章 10」定时任务调度

763 阅读2分钟

「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」。

⭐定时任务调度:指系统在某个时间执行的特定的命令或程序!有些重要的工作必须周而复始地执行,如病毒扫描。有些用户希望执行某些程序,比如对 mysql 数据库的定时备份。

1. crontab 定时任务调度

  • 语法 : crontab [选项]

  • 常用选项

    • -e:编辑 crontab 定时任务【crontab -e
    • -l:查询 crontab 任务【crontab -l
    • -r:删除当前用户所有的 crontab 任务【crontab -r
  • 重启任务调度:service cronb restart

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

  • 例子:*/1 * * * * ls -l /etc/ > /tmp/to.txt ==> 每小时的每分钟执行 ls- l /etc/ > /tmp/to.txt 命令

  • 5个 * 分别指:一小时中的第几分钟、一天中第几小时、一个月中第几天、一年中第几月、一周中星期几(0/7都是周日)。

    星期尽量别同时使用。

  • 占位符 * 图例说明:

  • 定时调度时间项案例

⭐关于 */1 * * * * ls -l /etc/ > /tmp/to.txt 命令的演示:

⭐**crontab 经典案例**

  • 1️⃣每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中:*/1 * * * * date >> /tmp/mydate
  • 2️⃣每隔1分钟,将当前日期和日历都追加到 /home/mycal 文件中:
    • */1 * * * * date cal >> /home/mycal

  • 3️⃣每天凌晨 2:00 将 mysql 数据库 testdb 备份到文件中(备份指令:mysqldump -u root -p密码 数据库 > /home/db.bak
    • crontab -e
    • 0 2 * * * mysqldump -u root -p123456 testdb > /home/db.bak

2. at 任务调度

  • at 命令是一次性定时计划任务——执行任务队列(执行完某个任务后,不会再执行此任务了),at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。
    默认模式下 atd 守护进程每 60s 检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
    在使用 at 命令时,一定要保证 atd 进程的启动,可以使用相关指令来查看:ps ef | grep atd
  • ⭐at 命令格式:at <时间> <命令>
  • atq : 查看任务队列
  • atrm <编号> : 删除编号对应的任务
  • at 任务调度实例
    • 2天后下午5点执行 /bin/ls /home
    • atq 命令查看系统中工作任务队列
    • 明天17点输出时间到指定文件内 比如 /root/date100.log
    • 2分钟后,输出时间到指定文件内 比如 /root/date200.log
    • 删除已经设置的任务atrm <编号>
  • Ctrl + D 结束 at 命令的输入
    • 🔥 Ctrl + D 的作用:【键盘输入结束(End Of File,EOF 或 End Of Input)】
    • 🔥 Ctrl + C 的作用:【中断目前程序】

希望本文对你有所帮助🧠
欢迎在评论区留下你的看法🌊,我们一起讨论与分享🔥