当前位置: 首页 > article >正文

Linux —— 定时任务(sleep、crontab、at)

目录

1、使用 sleep 来完成定时任务

2、使用 crontab 来进行定时任务

3、使用 at 来执行单次的定时任务


1、使用 sleep 来完成定时任务

        sleep n           等待 n 再继续往后执行 

        usleep n        等待 n 微秒再继续往后执行(1 秒等于 1 000 000 微秒)

# 定时,每分钟的第二十秒,输出一条信息

t=0
while [[ 1 -eq 1 ]];        # 无限循环
do
	d=`date "+%S"`
	d=`expr $d + 0`        # 如果秒为个位数,则十位上有一个0,通过计算把0去掉
	if [[ $d -eq 20 ]]; then
		echo `date "+%Y-%m-d %H-%M-%S"`
		((t++))
		sleep 1            # 间隔一秒后继续,不然程序执行太快,同一秒可能会输出多次
	fi
	if [[ $t -gt 3 ]]; then        # 只进行四次
		break
	fi
done 

2、使用 crontab 来进行定时任务

        确保 crond 服务处于启动状态:systemctl start crond。

        crontab 最小的单位是分钟,即最快是每隔一分钟执行一次。

crontab -l

查看当前有哪些定时任务

crontab -e

添加定时任务

crontab -r

删除目前的定时任务

        crontab -e 后,进入到编辑器中,每一行编写一个定时任务,格式说明如下。 

来自菜鸟教程

        program 可以是一个命令,也可以是一个 Shell 程序,推荐将定时执行的程序放到一个 Shell 程序中,让定时任务去执行 Shell 程序。 

        每分钟执行一次 /self/timing/outputTime.sh 这个程序(注意这个 Shell 程序要有执行权限。chmod u+x outputTime.sh 为用户添加执行权限):

        定时任务开启后,每隔一分钟,第一句的结果将通过邮件发送到 /var/spool/mail/root 中,第二句的结果将添加到指定的文件末尾(由于输出的文件是相对路径,当前的用户为 root,则crontab 执行后,会输出到 /root/outputTime.txt 中,即用户主目录下的 outputTime.txt 文件中 )。

分  时  月中第几日  第几月  周几

# 每两个小时执行一次,最后的 & 表示在后台进行执行,它不会阻塞cron的执行,允许cron继续检查和执行其他任务
0 */2 * * * /self/outputTime.sh &

# 每天7:30执行一次
30 7 * * * /self/outputTime.sh

# 每月1号和15号的22点执行一次
0 22 1,15 * * /self/outputTime.sh

# 每小时的第一分执行一次
1 * * * * /self/outputTime.sh

# 每周一至周五3点执行一次
0 3 * * 1-5 /self/outputTime.sh

# 每月的1、11、21、31日执行一次
30 6 */10 * * /self/outputTime.sh

crontab 的日志通常记录在系统的 /var/log/cron 或 、/var/log/syslog 中

3、使用 at 来执行单次的定时任务

        首次使用时安装 at :yum install at 

        启动 atd 服务:systemctl start atd

         at 基本格式

at [选项] [要执行的时间]

        时间可以是相对的也可以是绝对的。相对时间的设定是使用 now + 从现在开始要经过的时间。

at now + 3 minutes
at now + 3 hours
at now + 3 days
at now + 3 weeks
at now + 3 months
at now + 3 years


at 3:00 AM tomorrow
at 3:00 AM 08/01/2023
at 16:00 2023-12-30

        在一分钟之后向指定文件中追加 hello world。at -l 查看待执行的 at 任务。 

        使用管道符将要执行的内容传递给 at。在三天之后执行

        删除还未执行的任务

# 首先获取到其 id
at -l         # 或 atq

# 然后根据 id 删除该任务
at -d [id]    # 或 atrm [id]


http://www.kler.cn/a/272881.html

相关文章:

  • 在Mac mini上实现本地话部署AI和知识库
  • 云手机技术怎么实现的?
  • 镭速大文件传输视频文件预览实现原理
  • Linux:认识Shell、Linux用户和权限
  • 【机器学习实战入门项目】基于机器学习的鸢尾花分类项目
  • ASP.NET Core - .NET 6 以上版本的入口文件
  • 面试算法-38-最小覆盖子串
  • java入门 - 规范你的代码注释
  • SSH介绍及检测规则思路分析
  • 2024年Microsoft Office计算机二级考试必考45题
  • 19 # 高级类型:索引类型
  • Django生命周期
  • Python的接口自动化unittest测试框架和ddt数据驱动
  • 12 Python多进程
  • 前端基础篇-快速了解 Vue 前端框架(Vue 指令)
  • 提高效率,就信赖快速开发表单平台
  • 如何跨数据源根据一张表字段更新另一张表字段数据
  • IOS面试题object-c 91-100
  • 上传照片怎么改大小?几个图片改大小的方法
  • Codeforces Round 918 (Div. 4)----->E. Romantic Glasses
  • 计算机组成原理-2-计算机的发展应用
  • openEuler-22.03-LTS-SP2更改阿里云yum安装源
  • python异常:pythonIOError异常python打开文件异常
  • 阿里云云服务器ECS端口多个端口号开通教程
  • 组建对等网
  • Qt Excel文件读写