linux定时任务调度

简介

crontab

1
2
3
4
crontab 选项
-e 编辑
-l 查询
-r 递归删除当前用户所有的crontab任务

​ 注意:* * 之间是有空格的!空格表示间隔!image-20220112211400642image-20220112215812695

​ 编辑以后不是vim界面的话按提示操作就好了。

image-20220112220025271

(补充一个小技巧,在命令行遇到删除就变成^H 的情况,可以按住 ctrl+backspace 完成删除。)

案例一:

​ 做一个sh脚本,每隔一分钟写入时间和日历进入mycal文件中。

1、先vim写一个sh脚本(my.sh),注意把权限chmod给够。

1
2
date >> /home/my/mycal
cal >> /home/my/mycal

2、编辑crontab -e

1
*/1 * * * *  /home/my/my.sh

案例二:

​ 每天2点钟把 mysql数据库testdb,备份到文件中。

1、先vim写个sh脚本 (mysqldb_backup.sh),给好权限。

1
2
mysqldump -u用户名 -p密码 数据库 > /home/my/db.bak # 密码用户名都要紧贴着写
# 最好要用绝对路径 的mysqldump。像 /usr/bin/mysqldump

2、编辑crontab -e

1
*/1 * * * * sh /home/my/mysqldb_backup.sh

at

​ 一次性定时计划任务。at 要在atd服务开启以后才能执行。

​ 所以先过滤查看进程 ps -ef | grep atd ,若没有atd -f 进程,可以先安装一下at,以下是正常有atd进程的样子。image-20220113102353651

image-20220113111822801

image-20220113111851630

案例:

​ 两天后的下午5点执行 显示home目录下全部内容。

1
2
3
4
5
6
7
 at 5pm + 2days
// enter
// commend 注意用/bin/sh 写法写绝对路径调用这些命令sh文件。
/bin/ls /home
// enter
// ctrl + d
atq //查看有哪些at定时文件。

​ 明天17点,输出时间到/root/date100.log文件内

1
2
3
4
5
6
at 5pm tomorrow
//enter
date > /root/date100.log
//enter
//ctrl + d
atq

​ 两分钟后输出时间到指定文件内

1
2
3
4
5
6
at now 2 minutes
//enter
date > /root/date200.log
//enter
//ctrl + d
atq

​ 删除对应编号的at任务

1
2
3
atq // 查看对应编号信息
atrm 4 //删除4号任务