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]

相关推荐

  1. linux定时任务

    2024-03-13 05:20:04       40 阅读
  2. Linux定时任务

    2024-03-13 05:20:04       38 阅读
  3. Linux 定时任务管理

    2024-03-13 05:20:04       33 阅读
  4. linux设置定时任务

    2024-03-13 05:20:04       35 阅读
  5. Linux 定时任务

    2024-03-13 05:20:04       30 阅读
  6. linux定时调度任务

    2024-03-13 05:20:04       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 05:20:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 05:20:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 05:20:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 05:20:04       20 阅读

热门阅读

  1. 大数据开发(HBase面试真题-卷二)

    2024-03-13 05:20:04       20 阅读
  2. 嵌入式学习day36 数据结构

    2024-03-13 05:20:04       22 阅读
  3. 常用网络命令的使用

    2024-03-13 05:20:04       20 阅读
  4. 嵌入式学习day35

    2024-03-13 05:20:04       20 阅读
  5. openGauss gsql 常用元命令 一

    2024-03-13 05:20:04       20 阅读
  6. 3.11笔记2

    2024-03-13 05:20:04       18 阅读
  7. DevOps实战:Docker、Kubernetes与Jenkins的完美融合

    2024-03-13 05:20:04       22 阅读
  8. 爬虫(六)

    2024-03-13 05:20:04       19 阅读
  9. 【c++】运算符重载【赋值、关系、调用】

    2024-03-13 05:20:04       20 阅读
  10. React富文本编辑器开发(十)变换

    2024-03-13 05:20:04       16 阅读
  11. 力扣2834. 找出美丽数组的最小和

    2024-03-13 05:20:04       21 阅读
  12. springBoot mybatis-plus整合

    2024-03-13 05:20:04       19 阅读
  13. docker的快速入门教程

    2024-03-13 05:20:04       24 阅读